MS SQL Server 插入大量数据,批量导入大量数据

sql bulk 导入文本文件数据

发布用户:小梦

2023/02/17 19:57


在以往的通常情况下,一次性向数据库中插入多条数据的方法多是用循环代码一条一条地插入,这种方法在面临百万、千万级别的数据时显得毫无效率,通常要等待几分钟,甚至几十分钟;好在 MS SQL Server 提供了一个叫做 bulk insert 的方法,有了它就能够更加高效地导入大数据;使用方式并不复杂,用测试表举例:

CREATE TABLE test
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    name VARCHAR(50),
    tel VARCHAR(50)
)

 

其中主键 ID 为自增标识列,另外两个普通数据字段,然后再准备数据文件:

,henry,18011112222|
,mark,13011112222|
,join,14011112222|
,mary,15011112222|
,george,16011112222|
,henry,18011112222|
,mark,13011112222|
,join,14011112222|
,mary,15011112222|
,george,16011112222|

 

假设有一个叫做 d:\a.txt 的文件,文件内容如上,把那几行数据复制成更多行以进行大数据测试;然后编写 SQL 代码:

BULK INSERT test FROM 'd:\a.txt' WITH(FIELDTERMINATOR=',',ROWTERMINATOR='|')

 

其中 with 后的标识符 fieldterminator 指字段分隔符,rowterminator 指行分隔符,这里用的是 , 号和 | 号,结合准备好的数据文件可以知道自左边开始的列分别为 ID、name 和 tel,这个数据文件中每一行的第一个 , 号前没有数据,这是因为自增标识列可以在数据文件中被省略,如果后面也省略的话,插入到表中的内容就为 NULL,前提是列可以为 NULL;行分隔符的意思不用多解释,到此执行 SQL 命令就可以向 test 表中插入指定的数据,在我的电脑上插入 10 万条数据仅仅只需要 1 秒钟。



代码写多了,脑力不够用了,请我喝杯咖啡提提神 ☕

警告!禁止网络诈骗、非法集资、非法套现等法律外的缘由转账汇款,你的赞赏转账请考虑再三后支付,此收款不作任何形式的退款。





金额:

* 支付宝支付后如果没有自动返回请手动返回此页并刷新。



* 在线内容服务不支持任何形式的退款/退费操作;支付后的订单记录可以在“用户主页 - 用户订单中心”查看。

此网站可能不完全兼容您目前的浏览器!
此页随时可能被替换下线,请不要依赖此页功能!
此页正在维护更新,可能会出现错误或卡顿。
通知 & 公告

暂时还没有消息