将字符串格式的空值从iBatis传递到Postgres DB中的Integer值

时间:2016-01-19 12:04:16

标签: java mysql database postgresql

我正在使用iBatis将数据从1个表(MySQL)传输到另一个表(Postgres)。 Table1(String Name,INTEGER Age,DATE dob,String Note) 我用来通过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抛出以下错误:

  

栏\&#34;年龄\&#34;类型为smallint,但表达式的类型为字符变化\ n提示:您需要重写或转换表达式。

我的猜测是Postgres读取NULL为&#39; null&#39;。我试过传递0(有效),&#39;&#39; (不起作用)基于列名,但它不是一个通用而优雅的解决方案。

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

我需要帮助才能知道我是否可以在查询或甚至JAVA级别上进行解决方法,这会将NULL作为正确的null传递。

P.S。我已经尝试从Postgres IDE中将空值插入SmallInt,并且工作正常。

1 个答案:

答案 0 :(得分:0)

您需要检查变量是否为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