BCP笔记整理(二)
来源:互联网 发布:淘宝排名软件 编辑:程序博客网 时间:2024/05/17 00:01
BCP的基础用法可以参考上一篇:http://www.cnblogs.com/Gin-23333/p/5489889.html
这篇是补充一些有可能会用到,但是出场几率并不算大的几个参数
1、首先是 -F -L ,形象生动的来说就是 FirstRow 和LastRow 的参数,比如以下例子(测试的表用回之前那个)
ID name Chinese Math----------- -------------------------------------------------- ----------- -----------1 张三 90 802 李四 75 903 王五 68 1004 赵六 100 NULL5 うずまき ナルト 59 80
然后配合这个测试语句导出\导入数据
exec sys.xp_cmdshell 'bcp test.dbo.t3 out D:\t3 -S GINLATOP\MSSQLSERVER2016 -T -c'exec sys.xp_cmdshell 'bcp test.dbo.t4 in D:\t3 -S GINLATOP\MSSQLSERVER2016 -T -c -F 2 -L 4'select * from t4ID name Chinese Math----------- -------------------------------------------------- ----------- -----------1 李四 75 902 王五 68 1003 赵六 100 -1
对比原来t3的数据,先不要对正 ID列,看下数据行数,-F 和 -L 的参数意义是从第几行还是,截至到第几行,和平时类似使用的 offset next 和 limit 1,1 这些不一样。这个在导数据的时候需要注意一下。
2、关于标识列的去留。对于上面一个例子,虽然导出的数据是存在ID列的,但是导入的时候却跟原本的ID列的值不一致。在BCP里面也是可以处理,使用-E 参数来进行控制
exec sys.xp_cmdshell 'bcp test.dbo.t3 out D:\t3 -S GINLATOP\MSSQLSERVER2016 -T -c'exec sys.xp_cmdshell 'bcp test.dbo.t4 in D:\t3 -S GINLATOP\MSSQLSERVER2016 -T -c -E -F 2 -L 4'select * from t4ID name Chinese Math----------- -------------------------------------------------- ----------- -----------2 李四 75 903 王五 68 1004 赵六 100 -1
如上面例子所显示,原本t3的标识列已经带到t4里面。
3、处理默认值的用法,导出/导入数据的时候,导入到新表的时候,如果对应的值为null,那么如果导入的对应列存在默认值,则会插入默认值。如果要保持Null 值则可以用-k 的参数
修改一下表对象,往里面的Math 字段添加一个默认值alter table t4 add constraint DF_t4_Math default -1 for Math--保留数据Null值不填充默认值exec sys.xp_cmdshell 'bcp test.dbo.t4 in D:\t3 -S GINLATOP\MSSQLSERVER2016 -T -c 'exec sys.xp_cmdshell 'bcp test.dbo.t4 in D:\t3 -S GINLATOP\MSSQLSERVER2016 -T -c 'ID name Chinese Math----------- -------------------------------------------------- ----------- -----------1 张三 90 802 李四 75 903 王五 68 1004 赵六 100 -15 うずまき ナルト 59 80exec sys.xp_cmdshell 'bcp test.dbo.t4 in D:\t3 -S GINLATOP\MSSQLSERVER2016 -T -c -k'ID name Chinese Math----------- -------------------------------------------------- ----------- -----------1 张三 90 802 李四 75 903 王五 68 1004 赵六 100 NULL5 うずまき ナルト 59 80
虽然说可以指定是否保留导入数据的Null值,但是要说明一点,如果存在多列有默认值的列,目前的版本在导入的时候要么选择全部取默认值,要么全部保留Null值,不能A列使用默认值而B列保留空,这个需要留意一下
4、BatchSize 这个也挺好用。 -b 参数,相当于每次导出/导入多少条数据。这样的好处是当数据量很大的时候,假如途中出错,在出错的前面批次的数据都可以正常导入,将不会影响之前导入的数据。
--每个批次传入的数据行数exec sys.xp_cmdshell 'bcp test.dbo.t4 in D:\t3 -S GINLATOP\MSSQLSERVER2016 -T -c -b 1'exec sys.xp_cmdshell 'bcp test.dbo.t4 in D:\t3 -S GINLATOP\MSSQLSERVER2016 -T -c -b 1'output---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------NULL开始复制...已向 SQL Server 发送了 1 行。总共发送了: 1已向 SQL Server 发送了 1 行。总共发送了: 2已向 SQL Server 发送了 1 行。总共发送了: 3已向 SQL Server 发送了 1 行。总共发送了: 4已向 SQL Server 发送了 1 行。总共发送了: 5NULL已复制 5 行。网络数据包大小(字节): 4096总时钟时间(毫秒) : 1 平均值: (每秒 5000.00 行。)NULL
5条数据分开了5次进行发送,这个就是-b 的作用。
0 0
- BCP笔记整理(二)
- 笔记整理之BCP
- JS笔记整理(二)
- 汇编语言笔记整理(二)
- C#笔记整理(二)
- jQuery整理笔记二----jQuery选择器整理
- jQuery整理笔记二----jQuery选择器整理
- 初学javascript,整理整理笔记(二)
- oracle笔记整理二[安装]
- Delphi笔记整理(二)
- 纸质笔记整理(二)
- 笔记整理(高薪课程二)
- JavaSE自学笔记整理(二)
- 计算机网络笔记整理(二):物理层
- Hibernate框架笔记整理--二
- bcp
- bcp
- BCP
- Bootstrap table 服务器端分页示例
- SQL编程:模糊表关联不求人 ---> concat + like就能行
- 一文搞懂算法的时间复杂度与空间复杂度
- C++中math.h库函数
- 笔记整理之BCP
- BCP笔记整理(二)
- Golang测试技术
- “独角兽”初长成,喱喱学车引领互联网学车新模式
- HotSpot算法实现
- 双机工作,独立条件最优解
- mediawiki 导入导出Excel文件
- I/O 重定向
- STM32的时钟系统RCC详细整理
- Android成长之路(7)——关于隐式Intent的用法