我有这张桌子:
Members(person_id, school_id)
在本地SQL Server的本地数据库中
我有一个文件inserts.sql
,其中包含5.000.000个插入内容:
Insert into Members(person_id, school_id) VALUES (...)
Insert into Members(person_id, school_id) VALUES (...)
Insert into Members(person_id, school_id) VALUES (...)
inserts.sql
是以编程方式从members.csv
我尝试了3件事:A,B,C
A)我尝试在Management Studio中运行.sql但由于内存不足而引发错误
B) 我尝试从MSDOS运行此文件,如下所示:
sqlcmd -S localhost -d mydb -i inserts.sql
我的CPU因为密集的工作而被冻结了。我等了10分钟,决定按Ctrl + C.我不得不重新启动计算机,因为它全是滞后的,我可以小心地移动光标
这打开了一个向导,我按照以下步骤操作:
来自平面文件的> members.csv> sql客户端>到表成员>完成
这根本没有让我的cpu滞后,它在8分钟内完成。它还向我展示了一个进度条。
问题:怎么来的? 这个向导在内部做什么来实现这个目标?这个向导不是在插入吗?他如何实现这一速度?如果不进行插入,他如何将数据放入表中?
答案 0 :(得分:1)
向导方法C)实际上在幕后创建了一个SSIS包。您甚至可以保存包以重新运行或编辑它。 SSIS具有许多性能优势,是我首选的数据移动/集成技术。