我导入源CSV文件,我不知道该信源编码,我只能看到两种�
(ANSI编码)或�
(UTF8-没有-BOM编码),当我用Notepad++
(related question)打开文件。重音字符不能正确地与BULK INSERT进口
此文件已经导入到使用bulk insert
数据库mssql-2008
:
DECLARE @bulkinsert NVARCHAR(2000)
SET @bulkinsert =
N'BULK INSERT #TempData FROM ''' +
@FilePath +
N''' WITH (FIRSTROW = 2,FIELDTERMINATOR = ''","'',ROWTERMINATOR =''\n'')'
EXEC sp_executesql @bulkinsert
这是然后在列1(varchar()
)复制到正规table1
从#tempData
。现在当我看到这table1
我看到一些?
在这些字符的地方。
我试过cast
到nvarchar()
但它没有帮助。
当我深入了解那些字符真正支持我们同时下载的链接时,我看到的字符是é
,ä
,å
等等。
我会使用replace
修复数据,但我需要制作一些丑陋的代码,并查看单词的单个模式并进行替换,因此看起来很难。
数据库/表归类:SQL_Latin1_General_CP1_CI_AS
COLUMN1(VARCHAR(80))
能否这些字符更改为类似英文字符或原始字符,而不是?
马克。我看过Collation and Unicode Support哪个帮不了我。我明白了编码的含义,但没有提供给我what to do。我已经查看了stackoverflow的大部分帖子,是的,有一些关于它的帖子,但与我的搜索不符。
我无法弄清问题出在哪里。
你提的问题是非常不清楚。你是说当你导入一个文本文件时,SQL Server中的数据不正确?如果是这样,您需要提供以下信息:文本文件的编码,目标列的数据类型,您在哪里看到不正确的字符。 – Pondlife
@Pondlife感谢您的回复。我现在已经更新了这个问题,我希望它更清楚。 – tough
我还是不明白,所有的细节,但我最好的猜测是,你要导入Unicode数据成'varchar'列,而不是一个'nvarchar'之一。我建议你确保在'#tempData'所有的字符列是'nvarchar',然后尝试添加'DATAFILETYPE =“widechar''到您的['BULK INSERT'命令(http://msdn.microsoft.com/en -us /库/ ms188365(v = SQL.100)的.aspx)。忘记'table1',直到'#tempData'中有干净的数据。 – Pondlife