2011-12-21 69 views
2

我正在使用xml格式文件將數據從csv導入到sql表中。sql批量插入非標準字符

當我執行導入時,它一切正常,但一些擴展字符顯示不正確,像'▓'這樣的東西特別是'²'。

我假設它是與該文件的編碼有關,並且我不告訴導入如何處理它,但我不是100%確定。

我的CSV如下所示

「2」, 「4567」, 「2」, 「234562」, 「」, 「MAX」, 「」, 「2452」, 「平方米」, 「」,」」, 「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 

我曾嘗試批量插入DATAFILETYPE設置爲兩個「widenative」和「widechar」,但無濟於事。

還有什麼我在這裏失蹤?

+0

遺憾是SQL服務器2008R2 – 2011-12-21 23:24:35

回答

3

原來我需要設置的列本身的整理類似

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