• 笔记整理之 Bulk Insert


    之前2篇日志整理了BCP大致的用法,这次整理一下它的兄弟 Bulk Insert 的写法以及和bcp那边的结合的用法。

    首先,Bulk Insert 语句要在连接了Sql Server 服务器之后才执行的,和bcp 不一样,bcp 是以命令来执行,而Bulk Insert 相当于一个执行一个操作语句

    然后这里列举一下Bulk Insert 的用法,和对应bcp 的参数的对应关系。

    bulk insert t4
    from 'D: 3.txt'
    with(
    DataFileType = 'char' -- DataFileType选项支持 char|native|widechar|widenative 相对应的bcp接口就是 -c|-n|-w|-N
    ,BatchSize = 1 --BatchSize 相当于bcp里面的 -b 选项,每次交互多少行数据
    ,FieldTerminator = ' ' --FieldTerminator 相当于bcp 里面的-t选项,标识同一行数据里面的列分割
    ,RowTerminator = ' ' --RowTerminator 相当于bcp里面的 -r 选项,标识不同行数据里面的行分割
    ,ForMatFile = 'D:format.xml' --FormatFile 相当于bcp 里面的 -f 选项,使用配置文件进行批量导入数据,将适用以下情况
    --(1、文件的列比表的列多 2、列顺序和数据库列顺序不一致 )
    ,KeepIdentity --KeepIdentity 相当于bcp 里面的 -E 选项,表示保留导入数据的标识列的数据
    ,KeepNulls --KeepNulls 相当于 bcp 里面的 -k选项,保留导入数据的Null值,不转换成列的默认值
    ,FirstRow = 2 --FirstRow 相当于 bcp 里面的 -F 选项,表示开始导入的首行
    ,LastRow = 4 --LastRow 相当于 bcp 里面的 -L 选项,表示导入的尾行
    ,Check_Constraints --是否检查表中约束,如果没有该选项,那么忽略
    ,codePage = '850' --相当于bcp 里面的-C 选项
    )

    如果之前用过bcp 这个应该也没有什么大的问题。

    以上with 之后的所有选项其实都可以不填的,如果要填的话,可以参考官网或者我后面的注释。

    其中一个比较注意的是formatfile 这个选项,如果导入的文件和目标的表的列顺序或者列数不一致的时候,那么就需要使用formatflie 来告诉数据库数据怎么摆位,如果是想省点事可以先使用bcp 来生成一个格式化文件先,无论是非xm文件还是xml文件都可以支持。生成之后修改对应的项即可。

    另外,bcp 里面是没有Check_Constraints 这个选项的,但是BulkInsert 这里可以支持,使用这个选项也可以更好地保证导入数据的数据完整性。

    其他的参数和选项,都和bcp里面找到对应的方法,应用也类似。这里也没必要再次重复了~

    本次分享到这里

     

  • 相关阅读:
    Chrome V75V76新版无法存为mhtml格式解决办法
    RHEL7 的注册
    JQuery淡入淡出 banner切换特效
    怎样把小坚果做成大生意
    黄页前台联动菜单修改时不能显示,要重新选择|没样式
    V9任何页面GET调用内容分页的说明
    phpcms v9 自定义伪静态的分页函数
    phpcms v9 自定义分页 带下拉跳转
    discuz X2.5自己写代码,获取当前登录的用户信息
    discuz!X2.5技术文档
  • 原文地址:https://www.cnblogs.com/Gin-23333/p/5502109.html
Copyright © 2020-2023  润新知