欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

从TXT文本文档向Sql Server中批量导入数据

程序员文章站 2022-07-11 08:18:25
下面我们通过以下的简单的SQL语句即可实现数据的批量导入,代码如下: Bulk insert id From 'G:\文档\test.txt' With ( fieldterminator=',', rowterminator='\n')注意:1) bulk insert 为Sql server 中 ......

下面我们通过以下的简单的sql语句即可实现数据的批量导入,代码如下:

      bulk insert id


      from 'g:\文档\test.txt'


      with ( fieldterminator=',', rowterminator='\n')

注意:1) bulk insert 为sql server 中一个批量插入的操作

      2)test 为上边定义的表,即我们的数据将要插入的表

      3) ‘c:\users\olive\desktop\test.txt’为数据源文件所在磁盘上的物理路径

      4)with 相当于一些插入的附属条件,可以起这里添加一些约束限制条件等

      5) fieldterminator=’,’字段的分割符为”,”一般的txt文本数据源的字段分隔都为逗号,当然也可以为其他,比如”|”

      6) rowterminator=’\n’各条信息间的分割符为’\n’,一般的txt文本数据源的信息间的分割都是换行符,即一条信息占一行,也可以用其他格式如:”|\n”

 

三、bulk insert详解

这里只是大致上讲了一下bulk insert的用法,因为我们所涉及的表结构比较简单,表之间的关联也不是很大,所有就只是简单的用了下bulk insert。事实上bulk insert的功能还是比较强大的。上边讲了可以在with{}条件中加入一些参数以满足不同的需要。下面我们看一下微软官方的关于bulk insert 的用法介绍

bulk insert
   [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]
      from 'data_file'
     [ with
    (
   [ [ , ] batchsize = batch_size ]
   [ [ , ] check_constraints ]
   [ [ , ] codepage = { 'acp' | 'oem' | 'raw' | 'code_page' } ]
   [ [ , ] datafiletype =
      { 'char' | 'native'| 'widechar' | 'widenative' } ]
   [ [ , ] fieldterminator = 'field_terminator' ]
   [ [ , ] firstrow = first_row ]
   [ [ , ] fire_triggers ]
   [ [ , ] formatfile = 'format_file_path' ]
   [ [ , ] keepidentity ]
   [ [ , ] keepnulls ]
   [ [ , ] kilobytes_per_batch = kilobytes_per_batch ]
   [ [ , ] lastrow = last_row ]
   [ [ , ] maxerrors = max_errors ]
   [ [ , ] order ( { column [ asc | desc ] } [ ,...n ] ) ]
   [ [ , ] rows_per_batch = rows_per_batch ]
   [ [ , ] rowterminator = 'row_terminator' ]
   [ [ , ] tablock ]
   [ [ , ] errorfile = 'file_name' ]
    )]
这里我们主要看with中的一些参数:(部分)

1)       batchsize : 指定批处理中的行数

2)       check_constraints:启用约束检查,指定在大容量导入操作期间,必须检查所有对目标表或视图的约束。若没有 check_constraints 选项,则忽略所有 check 和 foreign key 约束,并在该操作后将表的约束标记为不可信。始终强制使用 unique、primary key 和 not null 约束。

3)       fire_triggers

指定将在大容量导入操作期间执行目标表中定义的所有插入触发器。如果为针对目标表的 insert 操作定义了触发器,则每次完成批处理操作时均激发触发器。

4)       keepnulls

指定空列在大容量导入操作期间应保留 null 值,而不插入列的任何默认值

5)       order ( { column [ asc | desc ] } [ ,...n ] )

指定如何对数据文件中的数据排序。如果根据表中的聚集索引(如果有)对要导入的数据排序,则可提高大容量导入的性能

6)       errorfile ='file_name'

指定用于收集格式有误且不能转换为 ole db 行集的行的文件。这些行将按原样从数据文件复制到此错误文件中。

---------------------
原文:https://blog.csdn.net/xuemoyao/article/details/8506338