2013-01-01 31 views
2

我想批量插入一個UTF-8 CSV文件,我從Google Drive下載該類型的文件,因爲Excel沒有正確保存我的CSV。SQL Server批量插入UTF-8 CSV文件無法正常工作

我打開谷歌驅動器生成的CSV文件中的記事本+ +和去View > Show Symbol > Show All Characters,我可以看到它包含的行終止(糾正我,如果我錯了這裏)

所以,我想下面的LF換行符我在臨時表中沒有任何記錄。這適用於其他使用默認行終止符的非UTF-8的CSV文件(即,當您未指定時爲'\ r \ n')。

我也試過'\ t','\ r \ n','\ r'&'\ 0',對於行終止符以及有和沒有數據文件類型..似乎沒有任何工作?這是關於我在臨時表中的字段類型嗎?或者是其他東西?

CREATE TABLE #TEMPResourceContents (
    [ResourceName] [nvarchar](250) NOT NULL, 
    [Language] [nvarchar](250) NOT NULL, 
    [Content] [nvarchar](max) NOT NULL 
) 
GO 

BULK INSERT #TEMPResourceContents 
FROM 'C:\import-resources.csv' 
WITH 
(FIRSTROW = 2, DATAFILETYPE = 'widechar', FIELDTERMINATOR = ',', ROWTERMINATOR = '\n') 
GO 

SELECT * FROM #TEMPResourceContents 

回答

4

順便說一下,BULK INSERT不支持UTF-8。

See Reference Link MSDN

See Reference Link

+0

AH確定,所以widechar很可能是UTF-16,所以我的文件必須是UTF-16而不是UTF-8 :(從第二連桿的聲音。我會嘗試一下,看看它是否與我的文本混淆。 – Pricey

+0

yup。按照第二個鏈接討論它應該是工作。試試吧。 – Sutirth

+0

我打開我的.xls文件並去'save as'並選擇文件'Unicode Text(* .txt)'的類型,然後改變批量插入來使用該字段終結符爲''\ t''的文本文件,這樣就解決了我的問題,導入的中文字符沒有正確導入。 POIN給我正確的方向。 – Pricey