我正在从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>
当我尝试在 Oracle 端插入my_table_image数据时,这会抛出"ORA-01465:无效的十六进制数"(目标列是 BLOB)。SQL Server 端的原始数据是十六进制。关于如何成功生成/更新从更改日志到SQL Server varbinary(max)和Oracle BLOB的任何想法?谢谢!
说Liquibase可能不是用于这种数据传输的正确工具。Liquibase主要关注数据库结构而不是数据库内容。用于传输简单数据(字符串、数字等)Liquibase可以完成这项工作,但对于像图片这样的东西,我会看看更专业的ETL(提取 - 转换 - 加载)工具。
我使用最多并取得成功的工具(尽管我从未做过图像数据,所以YMMV)被称为Pentaho - 他们有一个免费的开源"社区"版本,可能适合您。