首页 > 解决方案 > DB2 从 csv 摄取十进制数据

问题描述

我正在寻找一种 db2 方法来导入 .csv 文件(IMPORT.CSV),如下所示:

2020-01-01;1.234.567,12345

在 DB2 表 MY_TABLE 中:

CREATE TABLE
    MY_TABLE
    (
        DTRIF DATE,
        SALDO DECIMAL(18,5)
    );

我尝试了“INGEST”方法:

INGEST FROM FILE IMPORT.CSV FORMAT DELIMITED
  (
      $data date,
      $decimale char(18)
   ) 
   INSERT INTO MY_TABLE(dtrif,saldo)
      VALUES( 
        $data, 
        CAST(REPLACE(REPLACE($decimale, '.', ''), ',', '.') AS DECIMAL(18,5))
   );

但结果是:

    DTRIF      SALDO
2020-01-01 12345.00000 

为什么?

标签: db2import-from-csvingest

解决方案


对于 Db2-LUW v11.1.4.5,以下内容适用于我(可能有其他变体):

INGEST FROM FILE ... FORMAT DELIMITED BY ';'
  (
      $data date,
      $decimale char
  )
   INSERT INTO ... (dtrif,saldo)
      VALUES( $data
            , CAST(REPLACE(REPLACE($decimale, '.', ''), ',', '.') AS DECIMAL(18,5)));

推荐阅读