如果我的数据文件少于13个分隔符,如何通过BCP将数据导入到包含14列的表中?

时间:2014-11-26 18:58:18

标签: sql sql-server bcp

对于这个问题中非常尴尬的措辞感到抱歉。我会解释一下。

我有一个包含14列的表格,其中我试图通过BCP导入数据。我的数据来自文本文件。此文本文件是TAB分隔的。逻辑上,连续14个数据单元应该有13个分隔符。我的数据不一致,如果末尾的值为空,则不会有分隔符。这意味着某些数据行只有10个分隔符。这导致我的数据包围"环绕"何时进口。我的文本文件中的第一个数据单元放在它之前的第10列。它应该是自己新行中的第一个单元格。

事情是文本文件中的每一行都以" CRLF"结尾。在BCP中默认使用。

有没有办法告诉BCP填写所有14列,然后再转到下一行?或者我每次导入时都必须重新格式化我的数据文件(不理想)。

这是我的BCP命令:

 bcp testdb.dbo.MACARP in C:\Users\sysbrady\Desktop\MyData.txt /c /T /t "\t" /E -S WSTVDISTD023\SQLEXPRESS

1 个答案:

答案 0 :(得分:2)

  

"有没有办法告诉BCP在进入下一行之前填写所有14列?"

当您说"填写"时,您是否希望BCP保持文本文件中存在空值? -k限定符告诉BCP保留空值(确保表中的列允许空值)。请参阅以下链接:

http://msdn.microsoft.com/en-us/library/ms187887.aspx

  

"事情是文本文件中的每一行都以" CRLF"结尾。默认情况下在BCP中使用。"

目前还不清楚 - 您可以发布图片吗?不确定您是否将此作为问题或要保留的功能。