【问题标题】:Bulk Insert Type Mismatch T-SQL批量插入类型不匹配 T-SQL
【发布时间】:2013-06-15 15:34:50
【问题描述】:

我正在使用此 BULK INSERT 命令在 SQL Server 2012 Express 中插入 csv 文件。

BULK INSERT dbo.TS_FX
   FROM 'c:\fxRates.csv'
   WITH 
   (
      FIELDTERMINATOR =',',
      ROWTERMINATOR =',\n'
   );

fxRatesCSV 文件的第一行如下所示:

101,20130430,20130531,1.5307

我得到的错误是:

第 1 行第 4 列 (FX_RATE) 的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

我的表 (dbo.TS_FX) 有 4 列,定义如下

CURRENCY_ID (Numeric(3,0), null)
BEGIN_DATE (date, null)
END_DATE (date, null)
FX_RATE (float, null)

显然错误是我定义FX_RATE 列的方式,我尝试了各种其他类型(Decimal, Numeric)但我仍然得到同样的错误

非常感谢任何帮助。

谢谢

【问题讨论】:

  • 无法重现 - 对我来说效果很好(SQL Server 2012 Developer)。我自己不会使用 float - 这不准确 - 使用 decimal(10,4) 或类似的东西

标签: tsql sql-server-2012-express


【解决方案1】:

从 ROWTERMINATOR 中删除逗号

您的 BULK INSERT 语句应如下所示:

BULK INSERT dbo.TS_FX
FROM 'c:\fxRates.csv'
WITH (
     FIELDTERMINATOR =','
    ,ROWTERMINATOR ='\n'
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    相关资源
    最近更新 更多