插入表格时乌克兰字符更改为问号

时间:2017-09-13 11:14:50

标签: sql sql-server ssis

我将文件保存为包含乌克兰字符的Unicode文本,并使用SSIS将其成功加载到登台表。

像这样:

"Колодки тормозные дисковые, комплект"
Колодки тормозные
"Колодки тормозные дисковые, комплект"
This is Test

但是当我把它移到其他桌子时,它会改为:

"??????? ????????? ????????, ????????"
??????? ?????????
"??????? ????????? ????????, ????????"
This is Test

我使用的查询:

insert into finaltable
(
column1
)

select column1 from staging table.

整理:Latin1_General_CI_AS

如何纠正此错误?

2 个答案:

答案 0 :(得分:4)

在这里,您可以看到VARCHARNVARCHAR数据类型之间的差异:

DECLARE @Non_Unicode_Var VARCHAR (MAX) = 'Колодки тормозные дисковые, комплект';
DECLARE @Unicode_Var NVARCHAR (MAX) = N'Колодки тормозные дисковые, комплект';

SELECT @Non_Unicode_Var AS NonUnicodeColumn, @Unicode_Var AS UnicodeColumn;

结果:

+--------------------------------------+--------------------------------------+
|           NonUnicodeColumn           |            UnicodeColumn             |
+--------------------------------------+--------------------------------------+
| ??????? ????????? ????????, ???????? | Колодки тормозные дисковые, комплект |
+--------------------------------------+--------------------------------------+

因此,您需要将数据类型更改为NVARCHAR数据类型,然后将数据插入表中。

答案 1 :(得分:1)

在表中使用nvarchar,当你在insert语句中键入字符串时,将N放在前面,就像N'your string'。另外,请考虑更改排序问题导致的排序规则,请参阅https://docs.unity3d.com/ScriptReference/Caching.html问题。