Liquibase错误从SQL Server生成/插入varbinary(max)数据

时间:2014-11-13 14:34:45

标签: liquibase

我从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的任何想法?谢谢!

1 个答案:

答案 0 :(得分:1)

我想说Liquibase可能不适合用于这种数据传输。 Liquibase主要关注数据库结构而不是数据库内容。对于传输简单数据(字符串,数字等),Liquibase可以完成这项工作,但对于像图片这样的东西,我会看一下更专业的ETL(Extract-Transform-Load)工具。

我最常使用并且成功的工具(虽然我从未完成图像数据,因此YMMV)被称为Pentaho - 他们有一个免费的开源“社区”版本,可能适合你。