关于sql:SQL-Server-批量导入大数据

39次阅读

共计 816 个字符,预计需要花费 3 分钟才能阅读完成。

在以往的通常状况下,一次性向数据库中插入多条数据的办法多是用循环代码一条一条地插入,这种办法在面临百万、千万级别的数据时显得毫无效率,通常要期待几分钟,甚至几十分钟;好在 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 秒钟。

正文完
 0