除了其他人现在已经弃用或过时的早期答案之外,我想指出的是,在2022年5月的今天,发布版本为15.0.2080.9(SQL Server 2019),这对UTF-8完美地工作。
创建UTF-8编码文件(我与BOM一起使用)
那么
BULK INSERT #tempTable1
FROM 'C:\....\file.csv' WITH (
CODEPAGE = '65001',
FIRSTROW = 2, --skip the first line
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n')
GO
BULK INSERT [my_table]
FROM 'C:\path\to\file.csv'
WITH
(
FORMAT = 'CSV',
FIRSTROW = 2, -- if you have a title row, the first data row is 2nd
FIELDTERMINATOR = ',',
KEEPIDENTITY, -- remove it if you don't want identity to be kept
ROWTERMINATOR = '\n',
DATAFILETYPE = 'widechar',
ERRORFILE = 'C:\path\to\file_err.txt',
KEEPNULLS,
TABLOCK
)
4条答案
按热度按时间mzillmmw1#
1.转到
BULK INSERT
documentation on MSDN**2.**查找
CODEPAGE
上的部分**3.**见注:
**4.**进一步研究并找到Use Unicode Character Format to Import or Export Data (SQL Server),看看是否有帮助
4c8rllxm2#
这个问题在SQL Server 2017中仍然存在,请参见here和here。
如果您的导入只是一个偶然的练习,也就是说,如果不使用脚本导入是可以的,那么对我来说,有效的方法就是使用Tasks -〉Import -〉Flat file导入csv。
我在这里添加这个,因为这个页面是高,当你谷歌'SQL Server不支持代码页65001'。希望它能帮助一些。
8e2ybdfx3#
除了其他人现在已经弃用或过时的早期答案之外,我想指出的是,在2022年5月的今天,发布版本为15.0.2080.9(SQL Server 2019),这对UTF-8完美地工作。
那么
作品完美地为我,与许多法国和其他字符。
beq87vna4#
我浏览了链接到的文档@marc_s,找到了
DATAFILETYPE = widechar
的用法。然后,我继续尝试我的UTF-8 csv文件,但它没有工作,给我的错误:
[...]数据文件没有Unicode签名
然后,我重新保存我的csv文件与Notepad's Unicode format,重试导入,瞧,成功。
我的完整脚本(我使用的是SQL Server 2017):
注:
KEEPNULS
、read this question(例如,如果文件中有NULL
,请将其替换为空字符串)。