zoukankan      html  css  js  c++  java
  • 导出 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
    

      

  • 相关阅读:
    mysql索引批量在postgres里面重建
    获取metabase用户信息
    metabase一个sql统计
    C笔记-左值与右值
    前端散记(不定时补充)
    推荐一本书 保险进行时
    怎么增加照片的KB大小
    Java 流(Stream)、文件(File)和IO
    Java HashMap 和 ConcurrentHashMap 以及JDK 1.7 和 1.8 的区别
    【一文整理:Google Big table 序列化组件 Protocol Buffers 的使用 】
  • 原文地址:https://www.cnblogs.com/gwazy/p/3129249.html
Copyright © 2011-2022 走看看