SQL_SERVER数据 导出 Access数据

转载 2006年05月23日 17:32:00
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]'and OBJECTPROPERTY(id, N'IsProcedure'= 1)
drop procedure [dbo].[p_exporttb]
GO

/*--数据导出Access
导出数据库中的表到Access
    如果文件不存在,将自动创建文件
    如果表存在,将覆盖现有的表
    支持导出所有的数据类型

/*--调用示例
p_exporttb @s_tbname='sysobjects',@path='c:/',@fname='test.mdb'
--
*/

create proc p_exporttb
@s_tbname sysname,            --要导出的表名
@path nvarchar(1000),            --文件存放目录
@fname nvarchar(250),            --文件名
@tbname varchar(250)='',        --要创建的表名,默认为导出的表名
@password varchar(20)='',        --ACCESS数据库的密码
@s_user sysname='',            --如果提示连接错误,则需要提供登陆sql服务器的用户名及密码
@s_password varchar(50)=''
as 
set nocount on
declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int
declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)

--参数检测
if isnull(@fname,'')=''    set @fname='temp.mdb'
if isnull(@tbname,'')='' set @tbname=@s_tbname

--检查文件是否已经存在
if right(@path,1)<>'/' set @path=@path+'/'
set @sql=@path+@fname
exec master..xp_fileexist @sql,@err out

--数据库创建
select @sql=@path+@fname
    ,
@constr='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+@sql
        
+case isnull(@password,''when '' then '' 
            
else ';Jet OLEDB:Database Password='+@password end

if @err=0
begin
    
exec @err=sp_oacreate 'ADOX.Catalog',@obj out
    
if @err<>0 goto lberr

    
exec @err=sp_oamethod @obj,'Create',@out out,@constr
    
if @err<>0 goto lberr

    
exec @err=sp_oadestroy @obj
    
if @err<>0 goto lberr
end

--连接数据库
exec @err=sp_oacreate 'adodb.connection',@obj out
if @err<>0 goto lberr

exec @err=sp_oamethod @obj,'open',null,@constr
if @err<>0 goto lberr

--删除现有的表
set @sql='drop table ['+@tbname+']'
exec @err=sp_oamethod @obj,'execute',@out out,@sql
--if @err<>0 goto lberr

--导入表
if isnull(@s_user,'')=''
    
set @sql='SELECT * into ['+@tbname
        
+'] FROM [ODBC;Driver=SQL Server;Server='+ @@servername
        
+';database='+db_name()+'].['+@s_tbname+']'
else
    
set @sql='SELECT * into ['+@tbname
        
+'] FROM [ODBC;Driver=SQL Server;Server='+ @@servername
        
+';Uid='+@s_user+';Pwd='+isnull(@s_password,'')
        
+';database='+db_name()+'].['+@s_tbname+']'
    
exec @err=sp_oamethod @obj,'execute',@out out,@sql
if @err<>0 goto lberr

exec @err=sp_oamethod @obj,'close',null
if @err<>0 goto lberr

exec @err=sp_oadestroy @obj

return

lberr:
    
exec sp_oageterrorinfo 0,@src out,@desc out
    
if @obj<>0 exec @err=sp_oadestroy @obj
lbexit:
    
select cast(@err as varbinary(4)) as 错误号
        ,
@src as 错误源,@desc as 错误描述
    
select @sql,@constr,@fdlist
go

将ACCESS数据库数据转到SQL server数据库中(通用)

把ACCESS数据库转换成SQL server数据库,ACCESSH和SQL server都有很多不同的版本,但是转换也都大同小易,和这里我给大家说说最常见的怎么将ACCESS转化成SQL serve...
  • yecats
  • yecats
  • 2015年09月27日 15:36
  • 924

在SQL SERVER里查询access数据[转]

SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:/DB.mdb";User ID=Admin;Pa...

SQL Server数据导入到Access数据库

不同数据库之间的数据导入是每一个DBA都应该掌握的知识,下面就为您介绍SQL Server和Access这两个数据库间的数据导入方法,希望对您有所帮助。   SQL Server数据导入到Acce...

将access数据导入到sql server中

1、首先要开启OPENROWSET支持: 2、在sql数据库中执行以下语句: SELECT * INTO 数据库名称 FROM OPENDATASOURCE ('Microsoft...

Microsoft Access、MySQL 以及 SQL Server 所使用的数据类型和范围。

Microsoft Access 数据类型 数据类型 描述 存储 Text 用于文本或文本与数字的组合。最多 255 个字符。   ...

mysql,sql server,access数据类型汇总

Microsoft Access 数据类型 MySql 数据类型 Sql Server 数据类型

将access数据导入到sql server中

2012-08-03 11:25 将access数据导入到sql server中 1、首先要开启OPENROWSET支持:   2、在sql数据库中执行以下语句: SELECT...

Microsoft Access、MySQL 以及 SQL Server 所使用的数据类型和范围。

Microsoft Access 数据类型数据类型描述存储Text用于文本或文本与数字的组合。最多 255 个字符。 MemoMemo 用于更大数量的文本。最多存储 65,536 个字符。注释:无法对...

黑马程序员 将Access数据库里的数据导入Sql server数据库里

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------     前几天在黑马论坛上遇到一个...

Access传递查询访问Sql Server数据方法简介

http://www.accessoft.com/article-show.asp?id=4883Access使用ADO访问Sql Server数据的方法简介一、 什么是ADO连接用ADO设计程序都要...
  • yilin54
  • yilin54
  • 2011年03月03日 17:50
  • 2968
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL_SERVER数据 导出 Access数据
举报原因:
原因补充:

(最多只允许输入30个字)