none
batch使用bcp命令向数据库里导入文件的问题 RRS feed

  • 问题

  • 最近项目里有个处理,就是用批处理使用bcp命令导入数据。发现数据文件里有的数据是10.11-这种类型,表里字段类型是numeric,一跑batch就崩了,这种类型的数据是要变成负数后插入到表里,请问在不修改数据文件的前提下,怎么处理这种问题?
    2016年4月25日 7:25

全部回复

  • 有表结构,数据和处理的批处理么?(故障重现过程)
    2016年4月25日 8:08
  • 我只能给出简化版滴

    表结构:

    CREATE TABLE [dbo].[PRM_OCO05_ORG]( 
     [Test01] [numeric](17, 3) NOT NULL,
     [Test02] [numeric](17, 3) NOT NULL,
     [Test03] [numeric](17, 3) NOT NULL
    )

    数据:

    1O0501 00000001 201-
    1O0501 00000002 201-

    批处理调用的语句:

    bcp %INSTANCE%.%USERNAME%.G005_WK in %GETDIR%555.csv -m 9999 -f %BATPATH%CTL\5555555555555555.fmt -e %BATPATH%bad\PRM_OCO05_ORG.bad -S %SERVER% -U %USERNAME% -P %PASSWORD%

    fmt内容:

    12.0
    3
    1       SQLCHAR             0       7       "\t"     1     Test01              ""
    2       SQLCHAR             0       8       "\t"     2     Test02              ""
    3       SQLCHAR             0       4       "\r\n"   3     Test03              ""

    能帮看下问题出在哪里吗?

    2016年4月25日 9:06
  • Did you get any error from bcp? Does bcp itself work outside of batch?
    2016年4月25日 19:03
  • 201- 这种数字格式好像支持不了,可以考虑导入到字符列,然后再写 SQL 转换更新到数据列
    2016年4月26日 0:54