【问题标题】:Can Liquibase process csv data with no quotesLiquibase 可以处理不带引号的 csv 数据吗
【发布时间】:2026-02-04 17:20:09
【问题描述】:

我有一个格式如下的 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 配置?

我尝试了separatorquotechar 的各种组合,但没有成功。

【问题讨论】:

  • 属性名为quotchar(不带'e')。

标签: liquibase


【解决方案1】:

好的,至少对我来说,答案是在 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

我认为这里的错误消息/文档可能更清楚。我只是通过反复试验来解决的。

【讨论】:

    最近更新 更多