我有一个存储过程,该存储过程可批量导入文本文件并将其插入数据库。
CREATE TABLE DBO.TEMP_STORE
(
ID NVARCHAR(MAX),
[MONTH] NVARCHAR(MAX),
[YEAR] NVARCHAR(MAX),
STORE NVARCHAR(MAX),
SUBMITTAL NVARCHAR(MAX),
ENTITY NVARCHAR(MAX),
SUBMITTAL_TYPE NVARCHAR(MAX),
iCOUNT NVARCHAR(MAX),
STATE NVARCHAR(MAX),
COUNTRY NVARCHAR(MAX),
REGION NVARCHAR(MAX),
GLOBAL_REGION NVARCHAR(MAX),
LOCAL_CURRENCY NVARCHAR(MAX)
)
--SELECT * FROM DBO.TEMP_STORE
--prepare bulk insert query to load data from file to temp table
SET @SQL='BULK INSERT DBO.TEMP_STORE FROM '''+ @FilePath+''''
SET @SQL=@SQL+'WITH ('
SET @SQL=@SQL+'DATAFILETYPE = ''char'','
SET @SQL=@SQL+'FIELDTERMINATOR = ''|'','
--SET @SQL=@SQL+'ROWTERMINATOR = ''\n'','
SET @SQL=@SQL+'ROWTERMINATOR = ''' + nchar(10) + ''','
SET @SQL=@SQL+'FIRSTROW =2)'
--print @SQL
EXEC (@SQL)
例如,导入更新ROLLING_CONE_SHOP_DETAIL集SHOP_STATE ='SãoPaulo'会导致在我选择导入的同一行时将数据存储为'S +úoPaulo'。我可以更新该行并明确解决该问题:
UPDATE TEMP_STORE
SET STATE = 'São Paulo'
WHERE STATE= 'S+úo Paulo'
但是当我进行批量插入时,它不会保留特殊字符。我已经确认我要导入的文本文件保存在utf-8并包含正确的字符。
如何确保自己的大写插图正确保留特殊字符?
编辑:此问题与“重复”问题不同,因为我不希望将数据导入为UTF-8,而是要导入保留我的特殊字符的数据。
也许从标题中删除utf-8可以避免造成混淆