liquibase - Liquibase 可以处理不带引号的 csv 数据吗
问题描述
我有一个具有以下格式的 CSV 文件,我想使用 Liquibase 的 loadData 功能将其加载到 DB2 数据库中:
2,92551,1,Nature of Service / Procedure,1
(注意任何地方都没有引号)
我希望 Liquibase 将第 1、第 3 和第 5 列视为 INTEGERS,将第 2 和第 4 列视为 STRINGS。
我的列定义如下:
columns:
- column:
name: uid
type: NUMERIC
- column:
name: hcpcs_cpt_code
type: STRING
- column:
name: mue_value
type: NUMERIC
- column:
name: mue_edit_rationale
type: STRING
- column:
name: metadata_uid
type: NUMERIC
Liquibase 我们将所有列用单引号括起来并导致插入失败:
[INFO] INSERT INTO "XXXXX".MUE_NCCI_EDIT("2", "92551", "1", "Nature of Service / Procedure", "1") VALUES(?, ?, ?, ?, ?)
导致
Error: com.ibm.db2.jcc.am.SqlSyntaxErrorException: "2" is not valid in the context where it is used.. SQLCODE=-206, SQLSTATE=42703, DRIVER=4.22.29
我的 CSV 是愚蠢的,还是我缺少 Liquibase 配置?
我尝试了各种组合separator
和quotechar
组合,但没有运气。
解决方案
好的,至少对我来说,答案是在 csv 文件中添加一个标题行,即:
uid,hcpcs_cpt_code,mue_value,mue_edit_rationale,metadata_uid
2,92551,1,Nature of Service / Procedure,1
这与标题 attr 相结合。在列定义上解决了这个问题:
columns:
- column:
name: uid
type: NUMERIC
header: uid
- column:
name: hcpcs_cpt_code
type: STRING
header: hcpcs_cpt_code
- column:
name: mue_value
type: NUMERIC
header: mue_value
- column:
name: mue_edit_rationale
type: STRING
header: mue_edit_rationale
- column:
name: metadata_uid
type: NUMERIC
header: metadata_uid
我认为错误消息/文档在这里可能更清楚。我只是通过反复试验的过程来解决的。
推荐阅读
- c# - 如何正确清理 TcpListener,以避免“地址已在使用”错误?
- ios - 如何获取 N 个最近的项目,但使用 NSFetchRequest 按升序对它们进行排序
- html - 如何从中心用虚线连接圆圈?
- azure - 从 api 管理获取 Azure Key Vault 中的机密?
- c# - 正则表达式模式 c#
- python - 在 ubuntu linux 和 windows 中显示不同的情节
- c# - 在客户端 PC 上安装 Windows 安装程序包 (.msi) 的要求
- sql - 如何将 SELECT 查询的结果表存储在变量中?
- java - 为什么jpql中没有插入查询
- nginx - Nginx auth_request 限制不受尊重