我正在将葡萄牙语数据源(CSV文件)的数据(批量插入和合并更新)插入到我的数据库中。虽然DB排序规则是Latin1-General, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive for Unicode Data, SQL Server Sort Order 52 on Code Page 1252 for non-Unicode Data,数据存储在NVARCHAR列中,但是葡萄牙字符没有被正确保存。
即:原始数据
Regularização de Importação de mercadorias das ZEEs com Pagamento diferido, com Isenção插入后数据库中的数据
Regularização de Importação de mercadorias das ZEEs com Pagamento diferido, com Isenção这里是import语句:
CREATE PROCEDURE [dbo].[SP_Import_Temp_CPC]
-- Add the parameters for the stored procedure here
@FilePath [nvarchar](1000)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
TRUNCATE TABLE Temp_CPC;
-- Insert statements for procedure here
EXEC ('BULK INSERT Temp_CPC
FROM ''' + @FilePath + '''
WITH ( FIELDTERMINATOR = ''<,>'', ROWTERMINATOR =''\n'', FIRSTROW = 2, KEEPIDENTITY, CODEPAGE = ''ACP'',TABLOCK,ORDER(ITEMID ASC) );');
END我试过"ACP,RAW和OEM“,但得到了同样的结果。
我在这里做错什么了吗?
发布于 2013-01-17 12:09:27
在告诉BULK插入.csv文件的代码页之前,您不会得到正确的结果。你试过ACP,原始和OEM,但你没有尝试正确的。哪一个是你问的对的?这将是只有你能回答的事情,因为你有文件,你应该知道什么代码页是最初创建的!也许是葡萄牙语?
另一种选择是将.csv文件本身创建为Unicode文件,但这可以追溯到您的.csv文件源,并取决于该文件是如何创建的(您从朋友那里得到了bcp,您从朋友那里得到了它,原始程序作者总是使用它,等等)。
该文件是Unicode文件(没有BOM的UTF8)。
Server 不支持大容量插入的UTF-8文件.。您必须将文件保存为UCS-2LE或具有代码页860的ASCII。如果不能以正确的编码再次保存文件,则可以使用利比索诺夫进行转换。
发布于 2013-01-17 10:20:39
默认情况下,散装插入语句使用char数据类型。
您应该使用widechar数据类型,如:使用Unicode字符格式导入或导出数据中提到的那样。
主要的变化应该是:
但是原始的CSV文件必须是UNICODE。
https://dba.stackexchange.com/questions/33045
复制相似问题