我正在使用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,并且工作正常。
答案 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