我并不完全熟悉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文件中的数据,并且列之前或之后没有选项卡式空格。如果需要更多信息,请告诉我!谢谢你的帮助!
答案 0 :(得分:1)
可能是Unix文件,请参阅此处BULK INSERT data where the row terminator is a linefeed in SQL Server
您必须将CHAR(10)
与动态SQL
答案 1 :(得分:1)
事实证明,不需要Rowterminator。它并没有解决我使用批量插入的所有问题,但一旦我弄明白它就确实有帮助。我遇到的最大问题是字段被切断并放在另一条线上。这是截断发生的原因之一。检查原始csv下载对于确保一切顺利进行非常重要。这是一个独特的情况,因为我的公司仍然使用应该在DOS时死亡的软件应用程序。