如何从 SQL Server 导出单个大表?

ber*_*d_k 4 sql-server export

我的任务是从生产数据库导出一个大表的内容,并将数据导入远程位置的数据库中。

该表有大约 45,000,000 行。在数据库中使用大约 4 GB 空间。

它的 10 列的类型为 int、datetime 和 varchar(n) <= 255,但一些 varchar 字段包含换行符和批量复制使用的常用字段分隔符。

由于行数,我想导出到 Excel 是没有选择的。使用 SSIS 导出到 Flatfile 是可能的(大约需要 30 分钟),但重新导入不是自动的,因为有些字段会被吐出。

我现在的想法是

  1. 在生产服务器上创建一个新数据库(使用与生产数据库相同的排序规则)
  2. 将其恢复模式设置为简单
  3. 使用Select *将数据从 prod_db..big_table复制 到 copy_of_table
  4. 从这个新数据库中分离 mdf 文件并将其发送到其他位置
  5. 删除临时数据库

我假设插入到具有简单恢复模型的数据库中只会在新数据库上生成最少的日志记录,这种方式是导出数据最快的方式之一,对生产数据库的影响也是最小的。

Mar*_*ith 5

我认为带有格式文件而不是默认值的 BCP 将是您最好的选择。

创建格式文件


Sql*_*CID 5

您的方法可以正常工作,我会在新数据库上预先分配数据文件,因此它不需要自动增长。备份和分离一样有效。并且目标服务器将需要相同或更高版本的 SQL。