簡體   English   中英

SQL Server中的SQL Server批量插入類型不匹配錯誤

[英]SQL Server bulk insert type mismatch error from csv

我正在嘗試使用SQL Server和Visual Studio將tsv(制表符分隔的值)文件中的數據導入到表中,並且遇到一個似乎無法修復的錯誤。 我能夠重新創建一個關於我的數據庫如何運行的小例子,並模仿我所遇到的問題。

我在數據庫中使用.sql文件的以下屬性創建了一個新表:

CREATE TABLE [dbo].[TestTable]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY(1,1), 
    [variable1] INT NULL, 
    [variable2] INT NULL, 
    [variable3] INT NULL
)

我希望每當向表中添加一行時就自動生成ID。 對於我的部署后腳本,我正在讀取tsv文件:

BULK INSERT TestTable
FROM 'C:\Users\me\Documents\projects\testData.txt'
WITH
(
    FIELDTERMINATOR = '\t',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'C:\Users\me\Documents\projects\testDataError.txt'
)

這是我的數據文件,用制表符分隔:

11  11  11
22  22  22
33  33  33

最后,我得到的錯誤是:

消息4864,第16級,州1,第12行
第1行第3列(變量2)的批量加載數據轉換錯誤(類型不匹配或指定代碼頁的字符無效)。

Msg 4832,第16級,狀態1,第12行
批量加載:在數據文件中遇到了意外的文件結尾。

消息7399,第16級,州1,第12行
鏈接服務器“(null)”的OLE DB提供程序“ BULK”報告了一個錯誤。 提供程序未提供有關該錯誤的任何信息。

Msg 7330,第16級,州2,第12行
無法從OLE DB提供程序“ BULK”中獲取鏈接服務器“(空)”的行。

我主要關心第一個錯誤,對於其他錯誤,我也將不勝感激。 謝謝!

編輯:十六進制文件為數據文件添加了十六進制信息

ErrorFile打印到testDataError.txt

11  11  11
22  22  22
33  33  33
33  33  33

編輯:為數據文件第二十六進制轉儲添加了第二個十六進制文件

由於您有4個列(包括主鍵列),因此必須提供所有這四個列的數據。 因此,第一個是IDENTITY列,您可以為該列提供任何值,因為該列的值將不使用而是被忽略。

在您的情況下,如果您提供的數據可以正常工作:

1   11  11  11
1   22  22  22
1   33  55  66

我檢查了一下,發現它有效。 如果您沒有任何更改csv文件的選項,則可以創建一個沒有標識列的登台表並執行批量插入操作。 之后,您可以通過執行INSERT INTO命令將數據從登台轉移到目標表。 我希望這可以解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM