2017-09-13 68 views
1

我将一个文件保存为包含乌克兰字符的Unicode文本,并使用SSIS将其成功加载到登台表。当插入表格时,乌克兰字符更改为问号

像这样:

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

但是当我将它移动到它更改为其他表:

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

我使用的查询:

insert into finaltable 
(
column1 
) 

select column1 from staging table. 

整理:Latin1_General_CI_AS

我该如何纠正这个错误?

回答

1

在表中使用nvarchar,并且在插入语句中键入字符串时,将N放在前面,如N'your string'。考虑到排序问题,请考虑更改排序规则,请参阅this问题。

+0

我的确如此。 N'[DESC]',但它在列中插入DESC。 –

+0

@RohiniMathur是的,它就像这样 – Sami

+0

我已经将数据类型更改为nvarchar和N'DESC',但不是列值,而是插入字符串'DESC'。请建议。 –

4

在这里你可以看到VARCHARNVARCHAR数据类型之间的尊重:

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

SELECT @Non_Unicode_Var AS NonUnicodeColumn, @Unicode_Var AS UnicodeColumn; 

结果:

​​

所以,你需要将数据类型更改为NVARCHAR数据类型,然后将您的数据到桌上。