• 导出 sqlsever 到access


    SE [JjwDB]
    GO
    /****** Object:  StoredProcedure [dbo].[p_exporttb]    Script Date: 06/09/2013 14:12:07 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    /*--数据导出Access
    
    导出数据库中的表到Access
    
    如果文件不存在,将自动创建文件
    如果表存在,将覆盖现有的表
    支持导出所有的数据类型
    
    --邹建 2004.04(引用请保留此信息)--*/
    
    /*--调用示例
    
    p_exporttb @s_tbname='sysobjects',@path='c:\',@fname='test.mdb'
    --*/
    ALTER proc [dbo].[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
    

      

  • 相关阅读:
    .Net时间计算函数,统计某一天是一年的第几周,这一周从哪天开始到哪天结束
    1分钟搞定超慢SQL
    网站
    舞台
    相见欢
    一套完整系统对人生的意义
    2015/08/15心情
    Linux下压缩某个文件夹(文件夹打包)
    init进程 && 解析Android启动脚本init.rc && 修改它使不启动android && init.rc中启动一个sh文件
    andriod系统裁剪心得
  • 原文地址:https://www.cnblogs.com/gwazy/p/3129249.html
Copyright © 2020-2023  润新知