我把一张大表保存为generate script (就像这)。因此,生成的sql文件有大约十亿行INSERT INTO代码。假设这个表大约是30 Gb,而我的计算机有64 Gb内存--我不认为我们应该将所有30 Gb的数据加载到内存中。
因此,我的问题是,当我执行这个sql文件(许多INSERT INTO)时,sql是否尝试在RAM中加载所有内容?还是它会自动成批执行?
如果sql不自动将其拆分为批处理,那么如何使其成为批处理?谢谢-
总体情况:我需要将一个大表保存到硬盘中,转到另一台计算机并将表导入到那里的sql server。
发布于 2017-11-06 17:20:28
我推荐bcp来做这样的手术。
这将涉及两个步骤:
bcp dbo.someTable out "C:\someTable.txt" -c -T的命令,使用bcp导出数据。其中dbo.someTable是包含数据的表。bcp dbo.someNewTable in "C:\someTable.txt" -c -T的命令导入数据。其中dbo.someNewTable是存储导出数据的新表。如果您热衷于显式地管理批次尺寸。您将使用-b参数。从医学博士那里:
默认情况下,数据文件中的所有行都作为一个批处理导入。若要在多个批处理之间分配行,请指定一个小于数据文件中行数的batch_size。
https://stackoverflow.com/questions/47141891
复制相似问题