1

我对 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 用于制表符分隔值。我研究了如何批量插入 tsv 文件并找到 Aaron Bertrand 的一篇文章(不再可用)。

在这个链接中,他说要尝试使用 RowTerminator 来尝试让它工作。我试过\t\n、\n\r、\n、\r、\r\n\t、\n\r\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 文件中的数据,并且在列之前或之后没有选项卡式空格。如果需要更多信息,请告诉我!谢谢您的帮助!

4

2 回答 2

1

可能是 Unix 文件,请参见此处BULK INSERT data,其中行终止符是 SQL Server 中的换行符

您必须使用CHAR(10)动态 SQL

于 2013-07-25T18:37:33.277 回答
1

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

于 2013-08-20T19:35:08.247 回答