sql массовая вставка нестандартных символов - PullRequest
2 голосов
/ 22 декабря 2011

Я импортирую данные в таблицу sql из csv с использованием файла формата xml.

Когда я выполняю импорт, все работает хорошо, но некоторые расширенные символы некорректно отображаются с такими вещами, как «▓», в частности «²».

Я предполагаю, что это как-то связано с кодировкой файла, и я не говорю импорту, как с этим обращаться, но я не уверен на 100%.

Мой CSV выглядит следующим образом

"2", "4567", "2", "234562", "", "MAX", "", "2452", "m²", "", "", "254352"

и мой файл импорта

<?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="1" xsi:type="CharTerm" TERMINATOR='"' />
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR='","' />
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR='","' />
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR='","' />
  <FIELD ID="5" xsi:type="CharTerm" TERMINATOR='","' />
  <FIELD ID="6" xsi:type="CharTerm" TERMINATOR='","' />
  <FIELD ID="7" xsi:type="CharTerm" TERMINATOR='","' />
  <FIELD ID="8" xsi:type="CharTerm" TERMINATOR='","' />
  <FIELD ID="9" xsi:type="CharTerm" TERMINATOR='","' />
  <FIELD ID="10" xsi:type="CharTerm" TERMINATOR='","' />
  <FIELD ID="11" xsi:type="CharTerm" TERMINATOR='","' />
  <FIELD ID="12" xsi:type="CharTerm" TERMINATOR='","' />
  <FIELD ID="13" xsi:type="CharTerm" TERMINATOR='"\r\n' />
 </RECORD>
 <ROW>
  <COLUMN SOURCE="2" NAME="PARCELID" xsi:type="SQLINT"/>
  <COLUMN SOURCE="3" NAME="PROPID" xsi:type="SQLINT"/>
  <COLUMN SOURCE="4" NAME="LOT" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="5" NAME="RPLAN" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="6" NAME="SECTION" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="7" NAME="PARISH" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="8" NAME="COUNTY" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="9" NAME="AREA" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="10" NAME="AREATYPE" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="11" NAME="ZONING" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="12" NAME="MAPID" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="13" NAME="LOTPLAN" xsi:type="SQLNVARCHAR"/>
 </ROW>
</BCPFORMAT>

Я импортирую его с помощью команды sql

 BULK INSERT [parcel]
        FROM 'c:\test\PARCEL.csv'
        WITH (FORMATFILE = 'c:\test\PARCEL.xml', KEEPIDENTITY, FIRSTROW = 2, KEEPNULLS)

и моя структура таблицы выглядит как

[PARCELID] [int] NOT NULL
[PROPID] [int] NULL
[LOT] [nvarchar](255) NULL
[RPLAN] [nvarchar](255) NULL
[SECTION] [nvarchar](255) NULL
[PARISH] [nvarchar](255) NULL
[COUNTY] [nvarchar](255) NULL
[AREA] [nvarchar](50) NULL
[AREATYPE] [nvarchar](255) NULL
[ZONING] [nvarchar](255) NULL
[MAPID] [nvarchar](255) NULL
[LOTPLAN] [nvarchar](255) NULL

Я попытался установить тип файла массовой вставки данных как 'widenative', так и 'widechar', но безрезультатно.

Есть что-то еще, что я здесь упускаю?

1 Ответ

3 голосов
/ 22 декабря 2011

Оказывается, мне нужно было установить параметры сортировки для самого столбца, как

<FIELD ID="10" xsi:type="CharTerm" TERMINATOR='","' COLLATION="Latin1_General_CI_AS" />
...