我有一个过程可以调用另一个过程来进行查询并生成一个csv文件,并且运行良好,问题是联系人很多,我需要每1000个联系人拆分成多个文件吗?为此吗?
谢谢。
答案 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语句。