Я столкнулся с проблемой в течение нескольких часов, и я не могу показаться, что обманываю ее.SELECT FROM OPENROWSET (BULK ...) смена специальных символов
Итак, у меня есть база данных SQL Server 2008R2, Collation SQL_Latin1_General_CP1_CI_AS. Внутри есть таблица с полем с именем incoming_name. Сопоставление этого поля также является SQL_Latin1_General_CP1_CI_AS, и это NVARCHAR (255).
У меня есть. CSV-файл со 123000 строк. Это базовый csv, нет двойных кавычек вокруг текста, но нет запятой внутри полей, поэтому, когда я запускаю ручной импорт в мою базу данных, он отлично работает. Поле incoming_name содержит весь текст, но не более 255 символов. И в нескольких строках есть французские акценты (например, Ch * â * teau d'Agassac ').
Теперь я пытаюсь использовать код
select
test_file.[INCOMING_NAME] COLLATE SQL_Latin1_General_CP1_CI_AS
as [INCOMING_NAME]
, test_file.[PRODUCT_CODE] AS [PRODUCT_CODE]
FROM
OPENROWSET(
BULK 'INSERT PATH OF THE .CSV HERE',
FORMATFILE = 'INSERT PATH OF THE FORMAT FILE HERE',
FIRSTROW = 2
) AS test_file
С файл формата
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="255" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD ID="29" xsi:type="CharTerm" TERMINATOR='\r\n' />
</RECORD>
<ROW>
<COLUMN SOURCE="4" NAME="INCOMING_NAME" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="29" NAME="PRODUCT_CODE" xsi:type="SQLNVARCHAR"/>
</ROW>
Ввоз прекрасно работает, и я получаю все мои данные, с правильными значениями правые поля, за исключением акцентов ...
Например, когда я добавляю where test_file.incoming_name like '%agassac%'
в конце моего запроса, я получаю результат как «Chà ¢ teau d'Agassac» вместо исходных данных «Château d'Agassac» в моей базе данных.
Что я не понимаю, так это то, что я чувствую себя на каждом шагу процесса, я выбрал чувствительную к акценту сортировку с типом данных unicode (NVARCHAR), поэтому я действительно не понимаю, почему импорт не " t выбрать акценты.
Спасибо, что прочитали этот длинный вопрос,
John.
EDIT: Хорошо, файл CSV, который я хочу импортировать, кодируется с помощью utf-8, а SQL Server 2008 не хочет поддерживать импорт utf-8. Теперь я понятия не имею, что делать. Любая идея приветствуется ...
Вы пытались установить 'codepage'? –