db2 - 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
为什么?
解决方案
对于 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)));
推荐阅读
- python - 如何将这些(十六进制)数字转换为 Golang 中的字符?
- java - OpenApi/Swagger - 客户端和服务器有什么区别?
- rust - #[cfg(test)] 放在 lib.rs 的顶部有什么作用?
- php - 使用 php 从 MySql 获取 DateTime 并插入 Chart.js
- python - 单元测试 lambda 脚本
- python - 将 AES 类从 Python 2.7 移植到 3.x+
- elasticsearch - 使用动态模板索引 geo_point 时,Elastic 可以忽略大小写吗?
- python - 使用 SODA api 和 python 获取模式
- numba - 无法在 numba 中将 ListType[tuple(float64 x 2)] 转换为 list(tuple(float64 x 2))
- qt - 如何在 QtQuick 中对齐 ListView 中的项目