将空值插入 Postgresql

Posted

技术标签:

【中文标题】将空值插入 Postgresql【英文标题】:to insert Empty value into Postgresql 【发布时间】:2020-11-06 14:04:32 【问题描述】:

我有一个 postgresql 数据库。我正在使用 liquibase 将数据从 CSV 文件插入到 postgresql 中的表中。 在这里,我有表 ABC,其列类型为 SMALLINT。

CREATE TABLE ABC (
NAME VARCHAR(20),
REQUIRED SMALLINT DEFAULT 0,
SUMMARY VARCHAR(50)
);

我的 CSV

NAME,REQUIRED,SUMMARY
John,,Playing

我收到以下错误

liquibase.exception.DatabaseException: ERROR: syntax error at or near ","n 

变更集

<changeSet id="12345"
        author="test" runOnChange="true">
         <loadUpdateData
            encoding="UTF-8"
            file="/data/ABC.csv"
            quotchar=""
            separator=","
            tableName="ABC">
        <column name="NAME" type="STRING"/>
        <column name="REQUIRED" type="NUMERIC"/>
        <column name="SUMMARY" type="STRING"/>
    </loadUpdateData>
    </changeSet>

任何人都可以在这里提供帮助。另一个问题是,为什么默认在这种情况下不起作用?

【问题讨论】:

你可以试试John,NULL,Playing @PhilippJohannis ,它在表中存储为 [NULL]。好吗。在以前的数据库中,表中的字段为空(空白)。 【参考方案1】:

Required 定义为 smallint - 这意味着它可以是介于 -32768 和 32767 或 NULL 之间的任何整数。

NULL可以插入

NAME,REQUIRED,SUMMARY
John,NULL,Playing

'' 之类的内容无法插入到 int 列中。我假设[NULL]empty(blank) 只是不同数据库工具的不同渲染。

【讨论】:

以上是关于将空值插入 Postgresql的主要内容,如果未能解决你的问题,请参考以下文章

你如何将空值插入sql server

如何避免将空值插入主键或非空列?

如何将空值显式插入参数化查询?

如何将空值设置为结构的默认值

如何将空值附加到列表的开头? [复制]

将空值设置为列表中最接近的最后一个非空值 - LINQ