我使用Scriptella进行数据库迁移。将长B字段从表A复制到表B的最佳方法是什么?
当我这样做的时候:
<query ...
SELECT FL_DATA as data FROM A where FL_DATA IS NOT NULL
<script ...>
INSERT B (FL_DATA) VALUES ('$data');
</script>
</query>然后,它只会将'BLOB: java.io.IOException:内容太长而无法在内存中容纳‘写入目标字段(顺便说一句:长BLOB的大小仅为几个kBytes)。
发布于 2013-01-30 09:06:28
使用$variable语法时,只需将变量的文本值插入语句的文本中。建议的一种方法是使用准备好的语句语法。在这种情况下,值将与SQL语句分开传输。请试用以下方法:
<query ...
SELECT FL_DATA as data FROM A where FL_DATA IS NOT NULL
<script ...>
INSERT B (FL_DATA) VALUES (?data);
</script>
</query>发布于 2013-02-13 10:21:03
对不起,这不是回答,但我不知道如何评论ejboy的回答。
这对我不管用。我尝试过准备语句(在我的例子中)?描述和?2。当我试图在控制台上显示内容时,会遇到相同的错误:
<query connection-id="database">
SELECT id, description FROM table;
<script connection-id="copy_database">
INSERT INTO table VALUES (?1, ?2);
</script>
<script connection-id="text">
$id, $description
</script>
</query>对于显示和插入两者,我得到了相同的错误(这里是显示的示例):
BRA0735401, CLOB: java.io.IOException: Content too long to fit in memory我的主要任务是从一个数据库复制到另一个数据库。与Jan的情况一样,blob/clob内容大约是40 kB (从数据库的角度来看,这是MySQL MEDIUMTEXT)(从数据库的角度来看,每个键/值的列表都是单独的),可以从一个文件(带有mp3文件的脚本示例)中插入blob/clob,并且可以将blob的内容写入一个文件(带有odbc的脚本示例和带有janino的图片),所以我将尝试使用一个临时文件的解决方案,但这不是一个漂亮的解决方案。我说的对吗?
有没有更简单的解决办法?
你好,杰西克
https://stackoverflow.com/questions/14558421
复制相似问题