我有此表:
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)我尝试在管理工作室中运行.sql,但由于没有足够的内存
而丢了错误b)我尝试从MSDOS运行此文件:
sqlcmd -S localhost -d mydb -i inserts.sql
我的CPU从密集工作中冻结了。我等了10分钟,决定去Ctrl c。我不得不重新启动计算机,因为它全部懒惰,我可以将光标移动
- c)我去了SQL Management Studio,然后右键单击我的 DB>任务>导入数据
这打开了一个向导,我遵循此步骤:
来自Flat File> Member.CSV> SQL客户端>到表成员>完成
这根本没有使我的CPU laggy放在8分钟内完成。这也向我展示了一个进度栏。
问题:怎么来?这个向导在内部做什么来实现这一目标?这是向导做插入的吗?他如何实现这种速度,如果不执行插入,他将如何将数据放入表中?
向导方法c)实际上在场景后面创建了SSIS包。您甚至可以保存软件包以重新运行或编辑。SSI具有许多性能优势,这是我首选的数据移动/集成技术。