2013-01-01 88 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