MS SQL Server,批量插入UTF-16 BE中的失败插入文件

时间:2014-03-13 21:30:04

标签: sql-server sql-server-2012 bulkinsert utf-16 bcp

我在MS SQL Server 2012上有批量插入问题。输入文件以UTF-16 BE保存。

BULK INSERT Positions
FROM 'C:\DEV\Test\seq.filename.csv'
WITH
  (
    DATAFILETYPE = 'widechar',
    FORMATFILE = 'C:\DEV\Test\Format.xml'
  );

Fortmat文件:

<?xml version="1.0" encoding="utf-16"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RECORD>
    <FIELD ID="ActionCode" xsi:type="NCharFixed" LENGTH="4" />
    <FIELD ID="T1" xsi:type="NCharFixed" LENGTH="2" /> 
    <FIELD ID="ReofferCounter" xsi:type="NCharFixed" LENGTH="6" />
    <FIELD ID="T1" xsi:type="NCharFixed" LENGTH="2" /> 
    ... other fields....

  </RECORD>
  <ROW>
    <COLUMN SOURCE="ActionCode" NAME="DT" xsi:type="SQLNCHAR" LENGTH="255" />
    <COLUMN SOURCE="ReofferCounter" NAME="NO" xsi:type="SQLNCHAR" LENGTH="255" />
  </ROW>
</BCPFORMAT>

输入文件样本:

02|+00|... other cols.... 
02|+00|... other cols....

enter image description here

我有两个问题:

1)如果输入文件的编码为UTF-16 BE,我只会输入中文字符而不是数字。

2)如果我将输入文件转换为UTF-16 LE,我看到正确的字符,但是字符数据向左移动一个字符 - 好像BOM已被解析(并计为1个字符),但不是转化为输出(我不想要)。

first column strange data

问题:

1)我有办法,如何导入UTF-16 BE中的文件并转换为LE?

2)导致转变的原因以及如何避免转变?

0 个答案:

没有答案