![](/img/trans.png)
[英]SQL Server BULK INSERT: Bulk load data conversion error (type mismatch or invalid character for the specified codepage)
[英]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.