fredxiong

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
 

2017年5月26日

SQL Server BCP 导入导出使用

   Bcp 导出导入数据高效,比使用SQL Server Management Stdio 提供的数据库导出导入要高效因为sql server 也没有提供提供类似oracle的expdp和impdp的工具,如果用SQL Server Management Stdio提供的导入导出对大表数据进行迁移速度太慢了

   Bcp 导出数据高效比较适用于大表数据的迁移

进入doc命令行输入bcp命令,就弹出bcp命令的帮助信息:

C:\Users\wangwei>bcp

    用法: bcp {dbtable | query} {in | out | queryout | format} 数据文件

  [-m 最大错误数]             [-f 格式化文件]       [-e 错误文件]

  [-F 首行]                   [-L 末行]             [-b 批大小]

  [-n 本机类型]               [-c 字符类型]         [-w 宽字符类型]

  [-N 将非文本保持为本机类型] [-V 文件格式版本]     [-q 带引号的标识符]

  [-C 代码页说明符]           [-t 字段终止符]       [-r 行终止符]

  [-i 输入文件]               [-o 输出文件]         [-a 数据包大小]

  [-S 服务器名称]             [-U 用户名]           [-P 密码]

  [-T 可信连接]               [-v 版本]             [-R 允许使用区域设置]

  [-k 保留 Null 值]           [-E 保留标识值]

  [-h"加载提示"]              [-x 生成 xml 格式化文件]

参数介绍:

bcp共有四个动作可以选择。 

(1) 导入。 

这个动作使用in命令完成,后面跟需要导入的文件名。 

(2) 导出。 

这个动作使用out命令完成,后面跟需要导出的文件名。 

(3) 使用SQL语句导出。 

这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。 

(4) 导出格式文件。 

这个动作使用format命令完成,后而跟格式文件名。 

下面介绍一些常用的选项: 

-f format_file 

format_file表示格式文件名。这个选项依赖于上述的动作,如果使用的是in或out,format_file表示已经存在的格式文件,如果使用的是format则表示是要生成的格式文件。 

-x 

这个选项要和-f format_file配合使用,以便生成xml格式的格式文件。 

-F first_row 

指定从被导出表的哪一行导出,或从被导入文件的哪一行导入。 

-L last_row 

指定被导出表要导到哪一行结束,或从被导入文件导数据时,导到哪一行结束。 

-c 

使用char类型做为存储类型,没有前缀且以"\t"做为字段分割符,以"\n"做为行分割符。 

-w 

和-c类似,只是当使用Unicode字符集拷贝数据时使用,且以nchar做为存储类型。 

-t field_term 

指定字符分割符,默认是"\t"。 

-r row_term 

指定行分割符,默认是"\n"。 

-S server_name[ \instance_name] 

指定要连接的SQL Server服务器的实例,如果未指定此选项,bcp连接本机的SQL Server默认实例。如果要连接某台机器上的默认实例,只需要指定机器名即可。 

-U login_id 

指定连接SQL Sever的用户名,用户名直接与参数之间不要有空格,否则会报错

如用户名:Fred, 正确的格式为:-Ufred 

-P password 

指定连接SQL Server的用户名密码,密码与参数之间也不要有空格。 

-T 

指定bcp使用信任连接登录SQL Server。如果未指定-T,必须指定-U和-P。 

-k 

指定空列使用null值插入,而不是这列的默认值。 

 

使用bcp导出数据 

在控制台执行bcp:

bcp db_name.dbo.T_tablename  out c:\a.txt -c -T

bcp db_name.dbo.T_tablename out c:\a.txt -c -Uusername -Pxxxxx

通过调用SQL Server的一个系统存储过程xp_cmdshell以SQL语句的方式运行bcp:

exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename  out c:\a.txt -c -T'    --"-T"信任连接

exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename out c:\a.txt -c -Usa -Pxxxxx'

注意:如某一参数中间有空格,请用双引号" 引起来,不是两个单引号。

说明:

-T指定 bcp 使用网络用户的安全凭据,通过信任连接连接到 SQL Server。不需要 login_id 和 password。

如果不是使用T需要加上-U和-P参数输入用户名和密码

如果是本地导入导出可以不加-S参数,如果连接到远程服务需要加-S参数

bcp db_name.dbo.tablename out d:\table.txt -c -q -S"120.26.76.220,1833" -Usa -Ppassword

 

对要导出的表进行过滤。 

bcp不仅可以接受表名或视图名做为参数,也可以接受SQL做为参数,通过SQL语句可以对要导出的表进行过滤,然后导出过滤后的记录。 

EXEC master..xp_cmdshell 'bcp "SELECT TOP 20 * FROM db_name.dbo.T_tablename" queryout c:\table2.txt -c -U"sa" -P"password"' 

bcp还可以用Sql語句,將表中符合條件的資料,逐一導出至文本

--ParamValue 文本的內容
--TFileName 目標文件名
Declare @strSql varchar(200) 
Declare @Wo varchar(20)
Set @Wo='3035700013'
Declare @TFileName varchar(30)

Declare Cur_CreateFile Cursor Static for 
SELECT TFileName FROM T_tablename Where wo=@wo
OPEN Cur_CreateFile
FETCH NEXT FROM Cur_CreateFile INTO @TFileName
WHILE @@FETCH_STATUS = 0 BEGIN

set @strsql= 'bcp "select ParamValue from Nienmade.dbo.BLMO_RmClothValue Where TFileName='''+@TFileName +
'''" queryout "\\192.168.100.10\D$\My Files\#'+@TFileName+'.txt" -c -Uusername -Ppassword'

EXEC master..xp_cmdshell @strsql

FETCH NEXT FROM Cur_CreateFile INTO @TFileName
END
CLOSE Cur_CreateFile
DEALLOCATE Cur_CreateFile

bcp可以通过in命令将bcp导出的文件导入到表中,首先需要创建表结构和导出数据的表结构相同

在控制台执行bcp:

bcp db_name.dbo.T_tablename  in c:\a.txt-c -T

bcp db_name.dbo.T_tablename in c:\a.txt -c -Uusername -Pxxxxx

通过调用SQL Server的一个系统存储过程xp_cmdshell以SQL语句的方式运行bcp:

exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename  in c:\a.txt-c -T'    --"-T"信任连接

exec master..xp_cmdshell 'bcp db_name.dbo.T_tablename in c:\a.txt -c -Usa -Pxxxxx'

posted @ 2017-05-26 18:35 fredxiong 阅读(406) 评论(0) 推荐(0) 编辑
 

2015年12月21日

摘要: 关于软件工程方面的知识,相信大家都不陌生,软考中这部分知识也是重点考察范围,关于软件工程的知识点非常的琐碎,我把这部分的知识点分成了五部分,分别是软件工程的基础知识、开发管理、需求分析、软件设计、测试与维护。 1、第一部分介绍软件工程的基础知识,它包括生存周期,开发模型,开发方法,重点要掌握几... 阅读全文
posted @ 2015-12-21 09:31 fredxiong 阅读(394) 评论(0) 推荐(0) 编辑
 

2015年12月16日

摘要: 定义:无损联接分解是将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式,则称这种分解为无损联接分解。例1:关系模式:成绩(学号,姓名,课程号,课程名,分数)函数依赖:学号->姓名,课程号->课程名, (学号,课程号)->分数若将其分解为下面三个关系模式:成绩(学号... 阅读全文
posted @ 2015-12-16 18:34 fredxiong 阅读(4693) 评论(0) 推荐(0) 编辑
 
摘要: 每年5月22日,是软考数据库考试时间,距现在还有158天,过完年时间就显示非常紧张了,一年一度的软考正在向我们逼近。说起来软考要考的知识还是挺多的,我会用一系列的文章来为大家介绍软考中的各个知识块,大家一起讨论学习,希望明年各位都能领到一个红本本,呵呵。首先用一个图来看一下数据结构中各个知识点之间的... 阅读全文
posted @ 2015-12-16 17:33 fredxiong 阅读(746) 评论(0) 推荐(0) 编辑
 

2012年8月30日

摘要: declare @id int declare @type character(2) declare @pages int declare @dbname sysname declare @dbsize dec(15,0) declare @bytesperpage dec(15,0) declare @pagesperMB dec(15,0) create table #spt_space ( [objid] int null, [rows] int null, [reserved] dec(15) null, [data] dec(15) nul... 阅读全文
posted @ 2012-08-30 11:32 fredxiong 阅读(220) 评论(0) 推荐(0) 编辑
 

2011年6月10日

摘要: PrivateSubShowList()Ifm_DataSourceIsNothingThenExitSubIfm_DataSource.State=0ThenExitSubIfm_DataSource.RecordCount=0ThenExitSub'将comboboxlocked,以避免combobox自动清空'txtData.Locked=TrueIfNotInitList()ThenExitSub'取得usercontrol的位置DimrcWndAsrectDimcxScreenAsLongDimcyScreenAsLongGetWindowRectUserCo 阅读全文
posted @ 2011-06-10 01:06 fredxiong 阅读(307) 评论(0) 推荐(0) 编辑
 

2010年10月30日

摘要: 以此献给双显卡切换未成功的朋友们,希望你们可以解决问题! 我的配置是THINKPAD 2784 A34 + WINDOWS7旗舰版 阅读全文
posted @ 2010-10-30 11:55 fredxiong 阅读(8024) 评论(0) 推荐(1) 编辑
 

2010年5月17日

摘要: 1、使用Sp_executeSql执行SQL,用输出参数获得其变量[代码]其中@Sql字符串,必须为 ntext/nchar/nvarchar三种类型中的一种,否则会出错(以下摘自CSDN)2、在存储过程中使用RaisError,传回错误讯息  IF @@Error<>0  RaisError '更新数据时错误',16,1  return 如果执行间段错误,傳回使用者自訂的錯誤訊息,並... 阅读全文
posted @ 2010-05-17 16:04 fredxiong 阅读(1206) 评论(0) 推荐(0) 编辑
 

2010年4月16日

摘要: 1 合理的索引设计: 例:表record有620000行,试看在不同的索引下,下面几个SQL的运行情况: 语句A SELECT count(*) FROM record WHERE datebetween'19991201' and'19991214‘ and amount 2000 语句B SELECT count(*) FROM record WHERE date '19990901' and place IN ('BJ','SH') 语句C SELECT date,sum(amount) FROM record group by date 1 在date上建有一个非聚集索引 A:(2 阅读全文
posted @ 2010-04-16 11:50 fredxiong 阅读(1093) 评论(1) 推荐(0) 编辑
 
摘要: 索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。 1.聚簇索引和非聚簇索引(聚集索引,非聚集索引)   聚集索引:该索引中键值的逻辑顺序决定了表中数据行的物理顺序。如果对从表中检索的数据进行排序时, 经常要用到某一 列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本 CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH ALLOW_DUP_ROW(允许有重复记录的聚簇索引) 非聚簇索引:物理存储不按照索引排序   CREATE UNCLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) 阅读全文
posted @ 2010-04-16 11:30 fredxiong 阅读(611) 评论(0) 推荐(0) 编辑
 
 
点击右上角即可分享
微信分享提示