SQL 中各种数据导入和导出方法和工具总结.doc_第1页
SQL 中各种数据导入和导出方法和工具总结.doc_第2页
SQL 中各种数据导入和导出方法和工具总结.doc_第3页
SQL 中各种数据导入和导出方法和工具总结.doc_第4页
SQL 中各种数据导入和导出方法和工具总结.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据BCP除了可以在控制台执行外,还可以通过调用SQL Server的一个系统存储过程xp_cmdshell以SQL语句的方式运行BCP。如:EXEC master.xp_cmdshell BCP NTS.dbo.T_User out c:User.txt -c -Usa -Ppassword1. 四个动作01. 导入:这个动作使用IN命令完成,后面跟需要导入的文件名02. 导出:这个动作使用OUT命令完成,后面跟需要导出的文件名,数据源是表或者视图03. 使用SQL语句导出:这个动作使用QueryOut命令完成,跟OUT类似,数据源是SQL语句04. 导出格式文件:这个动作使用Format命令完成,后而跟格式文件名2. 常用的选项01. -f Format_FileFormat_File表示格式文件名。这个选项依赖于上述的动作,如果使用的是IN或OUT,Format_File表示已经存在的格式文件,如果使用的是Format则表示是要生成的格式文件02. -x这个选项要和-f Format_File配合使用,以便生成XML格式的格式文件03. -F First_Row指定从被导出表的哪一行导出,或从被导入文件的哪一行导入04. -L last_Row指定被导出表要导到哪一行结束,或从被导入文件导数据时,导到哪一行结束05. -c使用Char类型做为存储类型,没有前缀且以t做为字段分割符,以n做为行分割符06. -w和-c类似,只是当使用Unicode字符集拷贝数据时使用,且以nChar做为存储类型07. -t Field_Term指定字符分割符,默认是t08. -r Row_Term指定行分割符,默认是n09. -S Server_Name Instance_Name指定要连接的SQL Server服务器的实例,如果未指定此选项,BCP连接本机的SQL Server默认实例。如果要连接某台机器上的默认实例,只需要指定机器名即可10. -U Login_ID指定连接SQL Sever的用户名11. -P Password指定连接SQL Server的用户名密码12. -T指定BCP使用信任连接登录SQL Server。如果未指定-T,必须指定-U和-P13. -k指定空列使用NULL值插入,而不是这列的默认值3. 数据导出01. 导出整个表或视图BCP NTS.dbo.T_User out c:User.txt -c -Usa -Ppassword -使用密码连接(用户名和密码需要加上双引号)BCP NTS.dbo.T_User out c:User.txt -c -T -使用信任连接02. 导出SQL语句的目标数据BCP SELECT TOP 20 * FROM NTS.dbo.T_User queryout c:User.txt -c -Usa -PpasswordBCP SELECT TOP 20 * FROM NTS.dbo.T_User queryout c:User.txt -F 10 -L 13 -c -Usa -Ppassword -导出第10条到13条记录03. 导出格式文件BCP NTS.dbo.T_User format nul -f c:User_format1.fmt -c -T -把表结构信息导出到User_format1.fmt中BCP NTS.dbo.T_User format nul -f c:User_format2.fmt -x -c -T -把表结构信息导出XML中04. 导入数据在导入数据时可以根据已经存在的格式文件将满足条件的记录导入到数据库中,不满足则不导入。如上述的格式文件中的第三个字段的字符长度是24,如果某个文本文件中的相应字段的长度超过24,则这条记录将不被导入到数据库中,其它满足条件的记录正常导入BCP NTS.dbo.T_User in c:User1.txt -c -TBCP NTS.dbo.T_User in c:User1.txt -c -F 10 -L 13 -T -导入时也可使用-F和-L选项来选择目标数据BCP NTS.dbo.T_User in c:User1.txt -F 10 -L 13 -c -f c:User_format1.fmt -T -使用普通的格式文件BCP NTS.dbo.T_User in c:User1.txt -F 10 -L 13 -c -x -f c:User_format2.fmt -T -使用XML格式的格式文件05. 实际导出的例子EXEC master.xp_cmdshell BCP SZC.dbo.T_User out c:test1.csv -c -Usa -Pqwert1 -使用密码连接EXEC master.xp_cmdshell BCP SZC.dbo.T_User out c:test1.csv -c -T -使用信任连接4. 其他方法导入导出数据01. 导入数据SELECT * INTO authors1FROM OPENDATASOURCE(SQLOLEDB, Data Source=192.1.1.2; UserID=sa; Password=qwert1).pubs.dbo.authors02. 导出数据INSERT INTO OPENDATASOURCE(SQLOLEDB, Data Source=192.1.1.2; UserID=sa; Password=qwert1).test.dbo.authorsSELECT * FROM pubs.dbo.authorsINSERT INTO OPENDATASOURCE(MICROSOFT.JET.OLEDB.4.0,Text;DATABASE=c:)data#txt SELECT * FROM text1INSERT INTO OPENROWSET(MICROSOFT.JET.OLEDB.4.0,Text;DATABASE=c:, data#txt) SELECT * FROM text103. 导入Excel数据SELECT * INTO excel FROM OPENDATASOURCE(MICROSOFT.JET.OLEDB.4.0, Excel 5.0;DATABASE=c:book1.xls )Sheet1$04. 导入到ExcelINSERT INTO OPENDATASOURCE(MICROSOFT.JET.OLEDB.4.0, Excel 5.0;DATABASE=c:book1.xls )Sheet1$ SELECT * FROM excel* 导出到excelEXEC master.xp_cmdshell bcp SettleDB.dbo.shanghu out c:temp1.xls -c -q -SGNETDATA/GNETDATA -Usa -P/* 导入Excelselect * from openrowset(MicroSoft.Jet.OleDB.4.0,Excel 5.0;HDR=yes;Database=c:test.xls,sheet1$)-SELECT * FROM OpenDataSource( Microsoft.Jet.OLEDB.4.0,Data Source=c:test.xls;User ID=Admin;Password=;Extended properties=Excel 5.0).xactionsSELECT cast(cast(科目编号 as numeric(10,2) as nvarchar(255)+ 转换后的别名FROM OpenDataSource( Microsoft.Jet.OLEDB.4.0,Data Source=c:test.xls;User ID=Admin;Password=;Extended properties=Excel 5.0).xactions/* 导入文本文件EXEC master.xp_cmdshell bcp dbname.tablename in c:DT.txt -c -Sservername -Usa -Ppassword/* 导出文本文件EXEC master.xp_cmdshell bcp dbname.tablename out c:DT.txt -c -Sservername -Usa -Ppassword或EXEC master.xp_cmdshell bcp Select * from dbname.tablename queryout c:DT.txt -c -Sservername -Usa -Ppassword导出到TXT文本,用逗号分开exec master.xp_cmdshell bcp 库名.表名 out d:tt.txt -c -t ,-U sa -P passwordBULK INSERT 库名.表名FROM c:test.txtWITH (FIELDTERMINATOR = ;,ROWTERMINATOR = n)-/* dBase IV文件select * from OPENROWSET(MICROSOFT.JET.OLEDB.4.0,dBase IV;HDR=NO;IMEX=2;DATABASE=C:,select * from 客户资料4.dbf)-*/-/* dBase III文件select * from OPENROWSET(MICROSOFT.JET.OLEDB.4.0,dBase III;HDR=NO;IMEX=2;DATABASE=C:,select * from 客户资料3.dbf)-*/-/* FoxPro 数据库select * from openrowset(MSDASQL,Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:,select * from aa.DBF)-*/*导入DBF文件*/select * from openrowset(MSDASQL,Driver=Microsoft Visual FoxPro Driver;SourceDB=e:VFP98data;SourceType=DBF,select * from customer where country != USA order by country)go/* 导出到DBF */如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句insert into openrowset(MSDASQL,Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:,select * from aa.DBF)select * from 表说明:SourceDB=c: 指定foxpro表所在的文件夹aa.DBF 指定foxpro表的文件名./*导出到Access*/insert into openrowset(Microsoft.Jet.OLEDB.4.0, x:A.mdb;admin;,A表) select * from 数据库名.B表/*导入Access*/insert into B表 selet * from openrowset(Microsoft.Jet.OLEDB.4.0, x:A.mdb;admin;,A表)* 导入 xml文件DECLARE idoc intDECLARE doc varchar(1000)-sample XML documentSET doc =Customer was very satisfiedImportantHappy Customer.- Create an internal representation of the XML document.EXEC sp_xml_preparedocument idoc OUTPUT, doc- Execute a SELECT statement using OPENXML rowset provider.SELECT *FROM OPENXML (idoc, /root/Customer/Order, 1)WITH (oid char(5), amount float, comment ntext text()EXEC sp_xml_removedocument idoc/*导整个数据库*/用bcp实现的存储过程/*实现数据导入/导出的存储过程根据不同的参数,可以实现导入/导出整个数据库/单个表调用示例:-导出调用示例-导出单个表exec file2table zj,xzkh_sa.地区资料,c:zj.txt,1-导出整个数据库exec file2table zj,xzkh_sa,C:docman,1-导入调用示例-导入单个表exec file2table zj,xzkh_sa.地区资料,c:zj.txt,0-导入整个数据库exec file2table zj,xzkh_sa,C:docman,0*/if exists(select 1 from sysobjects where name=File2Table and objectproperty(id,IsProcedure)=1)drop procedure File2Tablegocreate procedure File2Tableservername varchar(200)-服务器名,username varchar(200)-用户名,如果用NT验证方式,则为空,password varchar(200)-密码,tbname varchar(500)-数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表,filename varchar(1000)-导入/导出路径/文件名,如果tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt,isout bit-1为导出,0为导入asdeclare sql varchar(8000)if tbname like %.%.% -如果指定了表名,则直接导出单个表beginset sql=bcp +tbname+case when isout=1 then out else in end+ +filename+ /w+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论