SQL BULK INSERT尝试插入要插入第一行的最后一列的所有行

时间:2013-07-25 18:35:10

标签: sql sql-server tsql bulkinsert

我并不完全熟悉SQL Server,但我正在开发一个项目,并尝试尽可能简化导入过程。我正在导入tsv文件而不是csv。我得到的问题是,当我尝试使用BULK INSERT时,我收到一条错误消息,第1行第15列(TY)的批量插入数据转换错误(截断)

我弄清楚它究竟在做什么的唯一方法就是尝试BULK INSERT 2行。它插入第一行,但不插入第二行。我查看了数据并转到了最后一列,果然,第二行是在最后一列。对于BULK INSERT,我正在使用代码..

BULK INSERT Deal_Log
FROM 'C:\Users\Deals.tsv'
WITH
(
    FIELDTERMINATOR = '\t',
    ROWTERMINATOR = '\n\t\r' 
)
GO

FieldTerminator \ t用于制表符分隔值。我研究了如何BULK INSERT tsv文件并找到了Aaron Bertrand的文章(不再提供)。

在这个链接中,他说要使用RowTerminator试图让它工作。我试过\ t \ n,\ n \ r,\ n,\ r,\ r \ n \ t \,\ n \ r \ t \ t。到目前为止,唯一插入任何内容的是\ t \ n,上面的那个和\ n \ t,但它只将第一行和所有剩余的行插入到第一行的最后一列。这是tsv文件的格式..

182  20  THE DEALERSHIP, INC.  07/05/13  A34323  MODEL  MODE DESCRIPTION  BANKS NAME  1225.25  7856  6  KL8CB8384323DC43445  D

我查看了tsv文件中的数据,并且列之前或之后没有选项卡式空格。如果需要更多信息,请告诉我!谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

可能是Unix文件,请参阅此处BULK INSERT data where the row terminator is a linefeed in SQL Server

您必须将CHAR(10)与动态SQL

一起使用

答案 1 :(得分:1)

事实证明,不需要Rowterminator。它并没有解决我使用批量插入的所有问题,但一旦我弄明白它就确实有帮助。我遇到的最大问题是字段被切断并放在另一条线上。这是截断发生的原因之一。检查原始csv下载对于确保一切顺利进行非常重要。这是一个独特的情况,因为我的公司仍然使用应该在DOS时死亡的软件应用程序。