Sql server 2008 r2 如何使用BCP将查询(cdc函数)检索到的数据转储到文本文件

Sql server 2008 r2 如何使用BCP将查询(cdc函数)检索到的数据转储到文本文件,sql-server-2008-r2,bcp,cdc,Sql Server 2008 R2,Bcp,Cdc,我试图使用BCP将数据从CDC函数转储到.dat文件中。Im使用以下查询(适用于Server 2008 R2): (为可读性而编辑,在BCP中作为单个字符串使用) 我的BCP字符串是: BCP "Query above" queryout "C:\temp\LWRCONTRIBUTIES.dat" -w -t ";|" -r \n -T -S {server\\instance} -o "C:\temp\LWRCONTRIBUTIES.log" 如您所见,我需要一个unicode格式的.dat

我试图使用BCP将数据从CDC函数转储到.dat文件中。Im使用以下查询(适用于Server 2008 R2):

(为可读性而编辑,在BCP中作为单个字符串使用)

我的BCP字符串是:

BCP "Query above" queryout "C:\temp\LWRCONTRIBUTIES.dat" -w -t ";|" -r \n -T -S {server\\instance} -o "C:\temp\LWRCONTRIBUTIES.log"
如您所见,我需要一个unicode格式的.dat文件和一个日志文件。我猜添加到函数结果中的“ChangeDTS”列导致了我的问题。错误消息显示:“[Microsoft][SQL Native Client]主机文件列只有在复制到服务器时才能跳过”

可以使用格式文件来解决这个问题,但由于此代码需要每天运行,可能一天不止一次,而且表格可能会发生更改,因此我不愿意不断调整格式文件(有100个表格需要相同的过程)

此外,这是在客户数据库上运行的,他们不喜欢我在他们的数据库中创建视图


有人知道我如何从cdc函数中创建一个包含选定列数的文本文件(.dat)吗?

找到了答案,无论使用哪个版本的bcp,bcp似乎都无法处理声明。如果我把它们删掉,效果会很好。
然而,根据另一个平台上的某人的说法,BCP应该是用来处理变量声明的。很高兴它现在能为我工作,但仍然不明白为什么它现在工作,以前没有。

找到了答案,不管使用哪种版本的bcp,bcp似乎都无法处理声明。如果我把它们删掉,效果会很好。
然而,根据另一个平台上的某人的说法,BCP应该是用来处理变量声明的。很高兴它现在对我有效,但仍然不明白为什么它现在有效,以前无效。

很抱歉,我也尝试了BCP,但并不十分满意。最后,我使用了一个名为“idea”的GUI工具来进行数据转换。在这种特殊情况下,GUI是不行的,需要一个命令行工具。不过还是要谢谢你。很抱歉回复太晚了-我也试过BCP,但不是很满意。最后,我使用了一个名为“idea”的GUI工具来进行数据转换。在这种特殊情况下,GUI是不行的,需要一个命令行工具。不过还是谢谢你。
BCP "Query above" queryout "C:\temp\LWRCONTRIBUTIES.dat" -w -t ";|" -r \n -T -S {server\\instance} -o "C:\temp\LWRCONTRIBUTIES.log"