2017-01-19 38 views
0

我試圖從遠程位置批量插入.CSVSQL Server批量插入 - 0行受影響

我的SQL語句是:

BULK INSERT dbo.tblMaster  
FROM '\\ZAJOHVAPFL20\20ZA0004\E\EDData\testbcp.csv' 
WITH (FIELDTERMINATOR = ',', 
      ROWTERMINATOR = '\n') 

.CSV看起來是這樣的:

john,smith 
jane,doe 

的CSV保存使用UTF-8編碼,並有在的底部沒有空行文件。我批量插入的表也是空的。

該表有兩列; firstname (nvarchar(max))secondname (nvarchar(max))

我在服務器上擁有sysadmin權限,因此有權執行批量插入。

運行SQL時,它運行沒有錯誤,和簡單的表演 -

0行(S)的影響

,不插入任何信息。

任何幫助,非常感謝。

+0

'.CSV'表示它是Excel表單,請確認。 –

+0

我試着用'.CSV'樣例編寫代碼,它運行良好。 –

+0

嘿OP,似乎你的SQL服務器不能在整個網絡上看到那個位置,或者它可以和你沒有權限...最好和你的DBA說話 – JohnHC

回答

0

嘗試首先使用bcp.exe插入文件,看看是否有任何行或任何錯誤。

BULK INSERT ... 
FROM '\\REMOTE\SHARE\...' 

是您現在將模擬和委派安全帶入圖片並且更難以診斷問題。當你像這樣訪問一個遠程共享時,你實際上正在做一個'雙跳'Kerberos模擬(aka。delegation),你需要特殊的安全設置。詳情請閱讀Bulk Insert and Kerberos

0

問題在於,至少部分是UTF-8編碼。這不是默認支持的。如果您使用的是SQL Server 2016,則可以指定代碼頁65001(即將, CODEPAGE = '65001'添加到WITH子句中)。如果使用較早版本的SQL Server,則需要先將文件編碼轉換爲UTF-16 Little Endian(在Microsoft Universe中稱爲「Unicode」)。這可以在保存文件或通過一些命令行實用程序完成。