我将文件保存为包含乌克兰字符的Unicode文本,并使用SSIS将其成功加载到登台表。
像这样:
"Колодки тормозные дисковые, комплект"
Колодки тормозные
"Колодки тормозные дисковые, комплект"
This is Test
但是当我把它移到其他桌子时,它会改为:
"??????? ????????? ????????, ????????"
??????? ?????????
"??????? ????????? ????????, ????????"
This is Test
我使用的查询:
insert into finaltable
(
column1
)
select column1 from staging table.
整理:Latin1_General_CI_AS
如何纠正此错误?
答案 0 :(得分:4)
在这里,您可以看到VARCHAR
和NVARCHAR
数据类型之间的差异:
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问题。