sql 二进制文件的导入导出

   /*--bcp-二进制文件的导入导出

  支持image,text,ntext字段的导入/导出

  image适合于二进制文件;text,ntext适合于文本数据文件

  注意:导入时,将覆盖满足条件的所有行

  导出时,将把所有满足条件的行也出到指定文件中

  此存储过程仅用bcp实现

  邹建 2003.08-----------------*/

  /*--调用示例

  --数据导出

  exec p_binaryIO 'zj','','','acc_演示数据..tb','img','c:zj1.dat'

  --数据导出

  exec p_binaryIO 'zj','','','acc_演示数据..tb','img','c:zj1.dat','',0

  --*/

  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_binaryIO]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

  drop procedure [dbo].[p_binaryIO]

  GO

  Create proc p_binaryIO

  @servename varchar (30),--服务器名称

  @username varchar (30), --用户名

  @password varchar (30), --密码

  @tbname varchar (500), --数据库..表名

  @fdname varchar (30), --字段名

  @fname varchar (1000), --目录+文件名,处理过程中要使用/覆盖:@filename+.bak

  @tj varchar (1000)='', --处理条件.对于数据导入,如果条件中包含@fdname,请指定表名前缀

  @isout bit=1 --1导出((默认),0导入

  AS

  declare @fname_in varchar(1000) --bcp处理应答文件名

  ,@fsize varchar(20) --要处理的文件的大小

  ,@m_tbname varchar(50) --临时表名

  ,@sql varchar(8000)

  --则取得导入文件的大小

  if @isout=1

  set @fsize='0'

  else

  begin

  create table #tb(可选名 varchar(20),大小 int

  ,创建日期 varchar(10),创建时间 varchar(20)

  ,上次写操作日期 varchar(10),上次写操作时间 varchar(20)

  ,上次访问日期 varchar(10),上次访问时间 varchar(20),特性 int)

  insert into #tb

  exec master..xp_getfiledetails @fname

  select @fsize=大小 from #tb

  drop table #tb

  if @fsize is null

  begin

  print '文件未找到'

  return

  end

  end

  --生成数据处理应答文件

  set @m_tbname='[##temp'+cast(newid() as varchar(40))+']'

  set @sql='select * into '+@m_tbname+' from(

  select null as 类型

  union all select 0 as 前缀

  union all select '+@fsize+' as 长度

  union all select null as 结束

  union all select null as 格式

  ) a'

  exec(@sql)

  select @fname_in=@fname+'_temp'

  ,@sql='bcp "'+@m_tbname+'" out "'+@fname_in

  +'" /S"'+@servename

  +case when isnull(@username,'')='' then ''

  else '" /U"'+@username end

  +'" /P"'+isnull(@password,'')+'" /c'

  exec master..xp_cmdshell @sql

  --删除临时表

  set @sql='drop table '+@m_tbname

  exec(@sql)

  if @isout=1

  begin

  set @sql='bcp "select top 1 '+@fdname+' from '

  +@tbname+case isnull(@tj,'') when '' then ''

  else ' where '+@tj end

  +'" queryout "'+@fname

  +'" /S"'+@servename

  +case when isnull(@username,'')='' then ''

  else '" /U"'+@username end

  +'" /P"'+isnull(@password,'')

  +'" /i"'+@fname_in+'"'

  exec master..xp_cmdshell @sql

  end

  else

  begin

  --为数据导入准备临时表

  set @sql='select top 0 '+@fdname+' into '

  +@m_tbname+' from ' +@tbname

  exec(@sql)

  --将数据导入到临时表

  set @sql='bcp "'+@m_tbname+'" in "'+@fname

  +'" /S"'+@servename

  +case when isnull(@username,'')='' then ''

  else '" /U"'+@username end

  +'" /P"'+isnull(@password,'')

  +'" /i"'+@fname_in+'"'

  exec master..xp_cmdshell @sql

  --将数据导入到正式表中

  set @sql='update '+@tbname

  +' set '+@fdname+'=b.'+@fdname

  +' from '+@tbname+' a,'

  +@m_tbname+' b'

  +case isnull(@tj,'') when '' then ''

  else ' where '+@tj end

  exec(@sql)

  --删除数据处理临时表

  set @sql='drop table '+@m_tbname

  end

  --删除数据处理应答文件

  set @sql='del '+@fname_in

  exec master..xp_cmdshell @sql

  go

时间: 2024-05-30 13:47:18

sql 二进制文件的导入导出的相关文章

从SQL Server中导入/导出 Excel 的基本方法

excel|server 从SQL Server中导入/导出 Excel 的基本方法 /*===================  导入/导出 Excel 的基本方法 ===================*/ 从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句: /*===================================================================*/--如果接受数据导入的表已经存在insert into 表 select

SQL Server数据导入导出技术概述与比较

当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理. 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理:调用命令行工具bcp处理数据:使用数据转换服务(DTS)对数据进行处理.这三种方法各有其特点,下面就它们的主要特点进行比较. 一.使用方式的比

SQL Server各种导入导出数据方式的比较

本文为原创,如需转载,请注明作者和出处,谢谢!本文曾发表于IT168:http://tech.it168.com/db/s/2006-08-02/200608020911005.shtml     当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理.     在SQL Server中主要有三

SQL Server数据导入导出工具BCP使用详解

BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.本文介绍如何利用BCP导入导出数据. BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.BCP可以将数据库的表或视图直接导出,也能通过SELECT FROM语句对表或视图进行过滤后导出.在导入导出数据时,可以使用默认值或是使用一个格式文件将文件中的数据导入到数据库或

SQL server 数据导入导出BCP工具使用详解

    数据的导入导出是数据库管理员常见的工作任务之一,尤其是平面文件的导入导出.BCP 工具则为这些任务提供了强有力的支持,它是基于DB-Library,尤其是在生产环境中,从本地传送数据到服务器或从服务器传送数据到本地,因它无需提供图形界面,减少网络带宽,提高了传输速率.BCP的全称是BULK COPY PROGRAM,它是一个命令行程序,可以完全脱离SQL server进程来实现.     常用的导入方式:bcp, BULK INSERT,OPENROWSET,or SSIS.      

急切求用C#程序实现excel和SQL数据库的导入导出操作功能!

问题描述 小弟新手,要做个C#程序实现把一个excel里面的内容导入到SQl数据库里一张已经存在的表中:把数据库里一张表的内容导出到指定位置的excel文档.代码该如何写啊.程序界面有个按钮,可以选择excel的文件路径的.最好有现成的实例.可以参考修改.各位大哥有的话,帮忙回帖或请发到小弟邮箱goodkiki@sina.com 谢谢!急切... 解决方案 解决方案二:同样需求xinguanxingmeng@126.com谢谢!!急切!!解决方案三: 解决方案四:谢谢你!!

SQL Server2008数据库导入导出兼容性处理方案

使用场景:SQL Server 的高版本数据库恢复到低版本则可能会有兼容性问题,为了解决此类问题进行数据库脚本模式处理,数据库结构,及数据存储更换版本等. 1. 选择要导出的数据库,右键任务,生成脚本. 2. 选择脚本向导,表视图选项,如下图:常规选项根据自己需要进行选择. 3. 下一步选择对象类型,表.用户定义函数全选或根据需要勾选. 4. 下一步选择表,选择要编写的脚本表,全选,或者根据需要进行勾选. 5. 下一步选择用户定义函数,根据需要勾选. 6. 输出选项,根据选项选择脚本输出模式.

SQL Server教程:三种导入导出数据使用方式比较

  在我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理. 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理;调用命令行工具BCP处理数据;使用数据转换服务(DTS)对数据进行处理.这三种方法各有其特点,下面就它们的主要特点进行比较. 一.使用方式

PL/SQL Developer导入导出数据库方法及说明

PL/SQL Developer是Oracle数据库中用于导入或导出数据库的主要工具,本文主要介绍了利用PL/SQL Developer导入和导出数据库的过程,并对导入或导出时的一些注意事项进行了说明,接下来我们就一一介绍. 一.导出步骤1 tools ->export user object 选择选项,导出.sql文件 2 tools ->export tables-> Oracle Export 选择选项导出.dmp文件   二.导入步骤导入之前最好把以前的表删除,当然导入另外数据库