首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何有效地插入大表

问如何有效地插入大表
EN

Stack Overflow用户
提问于 2017-11-06 16:49:30
回答 1查看 1.1K关注 0票数 0

我把一张大表保存为generate script (就像这)。因此,生成的sql文件有大约十亿行INSERT INTO代码。假设这个表大约是30 Gb,而我的计算机有64 Gb内存--我不认为我们应该将所有30 Gb的数据加载到内存中。

因此,我的问题是,当我执行这个sql文件(许多INSERT INTO)时,sql是否尝试在RAM中加载所有内容?还是它会自动成批执行?

如果sql不自动将其拆分为批处理,那么如何使其成为批处理?谢谢-

总体情况:我需要将一个大表保存到硬盘中,转到另一台计算机并将表导入到那里的sql server。

EN

回答 1

Stack Overflow用户

发布于 2017-11-06 17:20:28

我推荐bcp来做这样的手术。

这将涉及两个步骤:

  1. 通过发出类似于:bcp dbo.someTable out "C:\someTable.txt" -c -T的命令,使用bcp导出数据。其中dbo.someTable是包含数据的表。
  2. 通过发出类似于:bcp dbo.someNewTable in "C:\someTable.txt" -c -T的命令导入数据。其中dbo.someNewTable是存储导出数据的新表。

如果您热衷于显式地管理批次尺寸。您将使用-b参数。从医学博士那里:

默认情况下,数据文件中的所有行都作为一个批处理导入。若要在多个批处理之间分配行,请指定一个小于数据文件中行数的batch_size。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47141891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档