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

5 回答 5

15

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

在此处输入图像描述

于 2014-04-04T15:38:52.297 回答
2
  1. 将您的数据文件转换为 UTF-16 Little Endian(确切地说是 Little Endian)
  2. 使用带有 -w 选项的 bcp。
于 2015-08-26T09:11:02.043 回答
1

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


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

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

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

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


环境:

SQL Server 网络 2016

SQL Server Management Studio v17.9.1

记事本++ v7.7.1


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

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

于 2020-01-19T02:21:22.223 回答
0

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

在此处输入图像描述

于 2021-02-02T15:33:18.427 回答
-2

微软在编码方面一直很糟糕,尤其是在 SQL Server 中。是您的解决方案。

于 2013-09-11T20:20:17.103 回答