我从SQL Server数据库生成更改日志,我想用它来创建Oracle版本。其中一个表有一个varbinary(max)列,并包含要带来的数据。此表中生成的插入内容如下所示:
<changeSet author=... id="1415603816743-555">
<insert tableName="my_table">
<column name="my_table_id" value="0007JL11X000OZ10J60000948UM000000P8P"/>
...
<column name="my_table_image" value="[B@70eded35"/>
...
</insert>
...
</changeSet>
这会抛出一个&#34; ORA-01465:无效的十六进制数&#34;当我尝试在Oracle端插入my_table_image数据时(目标列是BLOB)。 SQL Server端的原始数据是十六进制。有关如何从changelog成功生成/更新到SQL Server varbinary(max)和Oracle BLOB的任何想法?谢谢!
答案 0 :(得分:1)
我想说Liquibase可能不适合用于这种数据传输。 Liquibase主要关注数据库结构而不是数据库内容。对于传输简单数据(字符串,数字等),Liquibase可以完成这项工作,但对于像图片这样的东西,我会看一下更专业的ETL(Extract-Transform-Load)工具。
我最常使用并且成功的工具(虽然我从未完成图像数据,因此YMMV)被称为Pentaho - 他们有一个免费的开源“社区”版本,可能适合你。