gpt4 book ai didi

java - 将字符串格式的空值从 iBatis 传递到 Postgres DB 中的整数值

转载 作者:搜寻专家 更新时间:2023-10-30 20:53:07 24 4
gpt4 key购买 nike

我正在使用 iBatis 将数据从一个表 (MySQL) 传输到另一个表 (Postgres)。表 1(字符串名称、整数年龄、日期日期、字符串注释)我用来通过 Ibatis 插入数据的代码是:

<insert id="insertData" parameterType="TransferBean" >
INSERT
INTO ${base.tableName}(${base.columns})
VALUES(
${base.columnValueStr}
)
</insert>

其中 columns 是列的列表,columnValueStr 是以逗号分隔格式传递的值的列表。

由 iBatis 创建的传递给 Postgres 的基本查询是:

INSERT INTO TABLE2(Name,Age,Dob,Note) VALUES("Ayush",NULL,"Sample")

但是 Postgres 抛出以下错误:

column \"Age\" is of type smallint but expression is of type character varying\n Hint: You will need to rewrite or cast the expression.

我的猜测是 Postgres 将 NULL 读取为“null”。我试过根据列名传递 0(有效)和 ''(无效),但这不是一个通用且优雅的解决方案。

无法根据列的类型进行过滤。

我需要帮助来了解我是否可以在查询甚至 JAVA 级别制定解决方法,将 NULL 作为正确的 null 传递。

附言我试过从 Postgres IDE 将空值插入 SmallInt,效果很好。

最佳答案

您需要检查变量是否为 NULL,将其替换为文本 NULL,因为 NULL 可能会呈现为 BLANK

确定是

INSERT INTO TABLE2(Name,Age,Dob,Note) VALUES('Ayush',NULL,'Sample','')

不是以下内容:(不适用于 SQL)

INSERT INTO TABLE2(Name,Age,Dob,Note) VALUES('Ayush',,'Sample',)

由于您正在将数据从 MySQL 传输到 PostgreSQL,请尝试:www.topnew.net/sidu/这可能对您的任务更容易。只需从一个数据库专家,然后导入到另一个数据库。由于SIDU同时支持MySQL和PostgreSQL

关于java - 将字符串格式的空值从 iBatis 传递到 Postgres DB 中的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34876370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com