将文本数据导入到数据库中的方法有很多,将文本格式(csv和txt)导入到SQL Server中,bulk insert是最简单的实现方法

1,bulk insert命令,经过简化如下

BULK INSERT schema_name . table_name
FROM 'data_file'
WITH
(
FIELDTERMINATOR = 'field_terminator',
ROWTERMINATOR = 'row_terminator',
DATAFILETYPE=‘WideChar’
);

2,使用bulk insert 将txt数据导入到数据库中,文本数据使用Tab分割Column,使用换行符分割row。

--create staging table
create table dbo.txt_staging
(
col1 nvarchar(255),
col2 nvarchar(255),
col3 nvarchar(255)
)
go--populate data
bulk insert dbo.txt_staging
from N'D:\test.txt'
WITH(FIELDTERMINATOR = '\t',ROWTERMINATOR = '\n'
)

3,使用bulk insert 将csv的数据导入数据库中
CSV文件使用“,”作为列分隔符,使用“\n”作为行分隔符

--populate data
bulk insert dbo.txt_staging
from N'D:\abc.csv'
WITH(FIELDTERMINATOR = N',',ROWTERMINATOR = N'\n',CODEPAGE =N'raw'
)

3,在导入Unicode时,需要将.txt文档保存为Unicode 编码方式

在使用bulk insert导入时,必须设置DATAFILETYPE='widechar',选项可能值有: 'char' | 'native'| 'widechar' | 'widenative' ,默认值是char。

如果有些Column没有值,设置 KEEPNULLS   选项,表示将该column设置为NULL。

bulk insert dbo.txt_staging
from N'D:\abc.txt'
WITH(FIELDTERMINATOR = '\t',ROWTERMINATOR = '\n',DATAFILETYPE ='widechar' ,KEEPNULLS
)

附:Bulk Insert 命令的调用格式:

  • BULK INSERT  [ schema_name ] . [ table_name ]
  • FROM 'data_file'
  • WITH (Arguments)]

重要参数注释:

  • data_file ':指定数据文件的full path,bulk insert命令将数据从该文件导入到Target Table中
  • ROWTERMINATOR = 'row_terminator' : 指定分隔行的字符,使用该字符来分割行(Row);
  • FIELDTERMINATOR = 'field_terminator' :指定分隔字段的字符,使用该字符来分割字段(Field或Column);
  • DATAFILETYPE = { 'char' | 'native'| 'widechar' | 'widenative' }:指定data file编码(Encoding)的类型,推荐使用widechar编码;
  • CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } :如果 data file 中含有单字节(char或varchar)字符数据,使用CodePage参数指定字符列的CodePage;
  • BATCHSIZE = batch_size :指定一个batch包含的数据行数量,在将数据复制到Table中时,每一个Batch作为一个单独的事务,如果一个batch复制失败,那么事务回滚。默认情况下,data file中的所有数据作为一个batch。Specifies the number of rows in a batch. Each batch is copied to the server as one transaction. If this fails, SQL Server commits or rolls back the transaction for every batch. By default, all data in the specified data file is one batch.
  • CHECK_CONSTRAINTS :指定在执行bulk insert操作期间,必须检查插入的数据是否满足Target Table上的所有约束。如果没有指定 CHECK_CONSTRAINTS 选项,则所有 CHECK 和 FOREIGN KEY 约束都将被忽略,并且,在此操作之后,表上的所有约束将标记为不可信(not-trusted);
  • FIRE_TRIGGERS :指定是否启动Insert触发器,如果指定该选项,每个batch成功插入后,会执行Insert触发器;如果不指定该选项,不会执行Insert 触发器;
  • KEEPIDENTITY :指定将data file中的标识值插入到标识列(Identity Column)中,如果不指定KeepIdentity选项,Target Table中的ID列会自动分配唯一的标识值;
  • KEEPNULLS:指定在执行bulk insert操作期间,空列(Empty Columns)应保留NULL值,而不是插入列的默认值
  • TABLOCK :指定在执行bulk insert操作期间,获取一个表级锁,持有表级锁,能够减少锁竞争(Lock Contention),提高导入性能

参考doc:

BULK INSERT (Transact-SQL)

Bulk Insert:将文本数据(csv和txt)导入到数据库中相关推荐

  1. SQL Server中采用BULK INSERT实现大数据量文本文件批量导入

    SQL语句: BULK   INSERT   dbo.table        FROM   'e:/test.tbl '        WITH                (           ...

  2. 将英文词典dict.txt导入到数据库中

    提示: 打开dict.txt,循环读取每一行. 将每一行的单词和意思分离,分别存储到字符串中 组sql语句,将单词和意思插入到数据库中. #include <stdio.h> #inclu ...

  3. 多个txt导入oracle数据库中,将多个txt文件导入到ORACLE

    iamlaosong文 将文本文件导入到数据库,如果不需要对文件进行处理,用sqlldr导入不仅方便,而且速度快.下面这个导入脚本,通过循环生成每个文本文件导入的控制文件,其中X'09'表示分隔符是T ...

  4. sqlbulkcopy mysql_c# SqlBulkCopy实现批量从数据集中把数据导入到数据库中

    今天遇到了一个导入类第一次见 SqlBulkCopy 可以实现从一个数据集导入到数据库中的表中 本来想从数据集中一条条遍历insert到库中 有了这个后发现: 只在把表与数据集的列做一下对应关系,再走 ...

  5. 文本的数据导入到数据库中 mysql

    文本的数据导入到数据库中 mysql 示例 演练 注意 mysql 从文件中读取数据 格式: load data infile 文件路径 into table 表名 文件路径: C:/Users/Ad ...

  6. php如何导入数据,““php中如何将execl的数据导入到数据库中

    php中如何将execl的数据导入到数据库中 1.使用PHP Excel Parser Pro,但是这个软件为收费软件: 2.可EXCEL表保存为CSV,然后通过phpmyadmin或者SQLyog导 ...

  7. php中怎么连接数据库中的表,php 连接 excel表格数据库数据-php中如何将execl的数据导入到数据库中...

    php中如何将execl的数据导入到数据库中 php导出大量数据的Excel: PHP从数据库分多次读取100万行记录,和分多次将100万行写入文本文件都没问题 Excel可以支持100万行记录,Ex ...

  8. php使用excel表格数据库数据,php使用excel表格数据库数据库-php中如何将execl的数据导入到数据库中...

    php中如何将execl的数据导入到数据库中 1.使用PHP Excel Parser Pro软件,但是这件为收费软件: 2.可将EXCEL表保CSV,然后通过 phpmyadmin 或者SQLyog ...

  9. 将csv文件导入到数据库中

    1.csv文件简介 CSV全称 Comma Separated values,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件.这样你就发现了,csv其实就是纯文本文件,可以使用记事本 ...

最新文章

  1. python路径拼接os.path.join()函数的用法
  2. 低版本eclipse导入高版本eclipse创建项目报错问题
  3. 机器学习中用到的概率知识_机器学习中有关概率论知识的小结
  4. 还在对Matplotlib繁琐的图层设置感到烦恼!?快来看看这个Python绘图工具包吧
  5. LeetCode 90. 子集 II(回溯+剪枝)
  6. Python python 五种数据类型--字符串
  7. ansible基本模块-shell
  8. python中文字体下载_python中matlabplot和seaborn中文字体显示的一种解决方案
  9. anaconda哪个版本是 python3.6_windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras...
  10. 深入PHP使用技巧之变量
  11. 5.8 拉普拉斯算子和拉普拉斯矩阵,图拉普拉斯算子推导 意境级讲解
  12. BMFont 字体生成工具使用
  13. 子群的陪集-》群的拉格朗日定理
  14. 全新原装 SD3337C SOP8 丝印HXN 升压DC/DC转换器恒流白光LED驱动
  15. 小萌库 一周漫画精彩回顾
  16. 备胎的自我修养 | (1)备胎的境界--七友
  17. python语言说句心里话歌词_python数据分析:民谣歌词汇总,告诉你他们到底在唱什么...
  18. python3发新浪微博
  19. mysql自定义函数的分号_MySQL 第八篇:自定义函数、存储过程、游标-阿里云开发者社区...
  20. android mediastore参数,从 mediastore Android获取全屏幕缩略图

热门文章

  1. Maya2015缩放工具异常处理
  2. 计算机毕设(附源码)JAVA-SSM基于JAVA语言的国货美妆店管理系统
  3. 华为5700系列清除console口密码
  4. java atomiclong 使用_Java AtomicLong set()用法及代码示例
  5. oracle认证考试_Oracle云认证–通过此3小时免费课程通过考试
  6. ESP8266 ESP-01 制作路由中继(信号放大装置)
  7. 谷歌气球 simplekml 入门《二》
  8. 10个简单技巧让你的Youtube视频排在首页(2018最新)
  9. java 循环二维数组_Java如何遍历二维数据
  10. face_Recognition--绘制人脸轮廓