如何将UTF-8平面文件导入SQL Server 2008 R2?

时间:2013-09-11 19:03:40

标签: sql-server unicode utf-8

我有一堆UTF-8编码的平面文件需要导入SQL Server 2008 R2数据库。散装刀片不能识别直径,也不能接受UTF-8。

据我所知,有很多关于SQL Server 2008如何处理UTF-8编码的文章,但我正在寻找任何更新的答案,因为大多数文章都是旧的。

有什么办法可以通过在插入过程中转换它们或在插入过程中运行它们来将这些平面文件放入数据库中吗?

我想远离手动转换每一个。此外,我尝试创建的SSIS包可以读取和分离数据。它似乎无法移动数据。 :(

平面文件由Java生成。将java环境从UTF-8转换为任何其他编码都是不成功的。

注意

我无意存储UTF-8数据。我的分隔符很时髦,因为它是UTF-8。分离列和行时,SQL Server无法读取字符。就是这样。

4 个答案:

答案 0 :(得分:10)

不正确,您只需选择代码页65001

enter image description here

答案 1 :(得分:0)

仅供参考,如果有人用它搜索并像我一样落在这里。


我尝试了十次被接受的答案,但没有成功。就我而言,我的数据文件是一个.csv平面文件,其中包含很多重音符/字母,例如ç é ã á

我还注意到,无论选择哪种编码,导入都是使用1251(ANSI-Latin 1)编码进行的。

因此,解决方案是在导入之前将我的.csv文件从UTF-8转换为完全相同的1251(ANSI-Latin 1)编码的。我使用Notepad ++进行了转换。

转换后,进行常规导入(通过SSMS任务->“导入数据”向导),选择1251(ANSI-Latin 1)编码,一切都正确导入。


环境:

SQL Server Web 2016

SQL Server Management Studio v17.9.1

Notepad ++ v7.7.1


此外,这也回答了原始OP的问题:

是否可以通过在插入之前转换它们或在插入期间运行的过程来将这些平面文件输入数据库中,从而做些什么?

答案 2 :(得分:0)

因为一开始它不起作用,所以我想添加到 Arthur 的答案中,正如 live-love 的评论中提到的: 您应该将字符串数据类型更改为 NVARCHAR。 您可以通过从“高级”选项卡和指定的列中选择 Unicode 字符串 (DT_WSTR) 来执行此操作。

enter image description here

答案 3 :(得分:-1)

微软一直是关于编码的废话,特别是在SQL Server中。 Here是您的解决方案。