使用BCP是否可以从SQL导出CSV中的每1000行?

时间:2019-04-26 11:11:25

标签: sql-server export-to-csv bcp

我有一个过程可以调用另一个过程来进行查询并生成一个csv文件,并且运行良好,问题是联系人很多,我需要每1000个联系人拆分成多个文件吗?为此吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

否,无法使用BCP分割文件。当使用“ out”或“ queryout”选项时,BCP命令仅允许指定一个目标文件。

要将您的单个数据集拆分为多个文件,请先在SQL中拆分它,然后对每个数据块执行BCP。

另一种选择(假设不是1000条记录是硬性要求,您只想将数据分解成较小的块)-将数据​​保存在单个表中并使用BCP查询数据,而不是使用“ out”选项。为此,您需要在数据中添加一列,可用于将数据拆分为多个块。任何数字标识符字段都适用于此。执行带查询输出的bcp并添加where子句以通过使用数字键拆分数据来过滤行。像这样:

“从db.dbo.your_table中选择*,其中right(cast(num_key)as varchar(12)),1)='0'”

“从db.dbo.your_table中选择*,其中right(cast(num_key)as varchar(12)),1)='1'”

“从db.dbo.your_table中选择*,其中right(cast(num_key)as varchar(12)),1)='2'”

和....依此类推,直到获得0到9。这应该将我们的数据很好地分成10个大小相等的块。如果需要较小的块,请在数字键的末尾使用2个字符,以获得100个块。还有许多其他方式以这种方式拆分数据。

但是最后,您还将在这里执行10条bcp语句。每个创建的文件1条bcp语句。