sql server 2014批量插入,带有utf-8个字符

时间:2017-04-19 10:33:53

标签: sql-server csv utf-8

我需要从SQL Server 2014中包含西里尔字符和其他utf-8字符的一些小csv文件中导入一些数据。

我知道只有sqlserver 2016(13)本身支持utf-8但....

谷歌围绕我建立了这个程序:

BULK INSERT [test].[dbo].[csv]
FROM 'C:\Book1.csv'
WITH
(
  FIELDTERMINATOR = ','
 ,ROWTERMINATOR = '\n'
 ,DATAFILETYPE = 'widechar'
 ,CODEPAGE       = 'OEM'
 ,FIRSTROW       = 1
 ,TABLOCK
)

运作良好

但是,由于要导入的文件具有不同的结构(不同位置的不同字段名称),我认为最好的解决方案是为每个文件结构使用.fmt文件,因此类似这样:

BULK INSERT [test].[dbo].[csv]
FROM 'C:\Book1.csv'
WITH
(
  FORMATFILE = 'C:\csv.FMT'
 ,DATAFILETYPE = 'widechar'
 ,CODEPAGE       = 'OEM'
 ,FIRSTROW       = 1
 ,TABLOCK
)

WHERE

  

csv.fmt

12.0
9
1  SQLNCHAR     2       200     ","     1     UserID                 Latin1_General_CI_AS
2  SQLNCHAR     2       60      ","     2     TypeID                  Latin1_General_CI_AS
3  SQLNCHAR     2       60      ","     3     TrackingID             Latin1_General_CI_AS
4  SQLNCHAR     2       200     ","     4     Name                   Latin1_General_CI_AS
5  SQLNCHAR     2       200     ","     5     Address                Latin1_General_CI_AS
6  SQLNCHAR     2       20      ","     6     PostalCode             Latin1_General_CI_AS
7  SQLNCHAR     2       200     ","     7     City                   Latin1_General_CI_AS
8  SQLNCHAR     2       200     ","     8     StateOrProvince         Latin1_General_CI_AS
9  SQLNCHAR     2       20      "\n"    9     CountryID              Latin1_General_CI_AS

但我得到

  

批量加载失败。第1行第1列的数据文件中的列太长。验证是否正确指定了字段终止符和行终止符。   OLE DB提供程序" BULK"对于链接服务器"(null)"报告错误。提供商未提供有关错误的任何信息。   无法从OLE DB提供程序中获取行" BULK"对于链接服务器"(null)"。

我尝试使用不同版本的终结符:" \ n"," \ r \ n",还" \ r \ 0 \ n \ 0"如建议的那样 bcp test.dbo.csv format nul -F 1 -w -T -f csv.fmt

但没有效果。 可以建议方向吗? 感谢

0 个答案:

没有答案