有没有简单的方法从apache Derby DB创建完整的SQL Dump? 使用dblook工具,我设法将数据库模式转储到sql文件,但似乎没有办法获取数据。
答案 0 :(得分:6)
Derby拥有批量导入/导出的程序。以下是使用ij
工具导出APP.MESSAGES
表的示例:
>ij
ij version 10.3
ij> connect 'jdbc:derby:dbName';
ij> CALL SYSCS_UTIL.SYSCS_EXPORT_TABLE('APP', 'MESSAGES',
'myfile.del', null, null, 'UTF-8');
0 rows inserted/updated/deleted
请参阅Derby Tools and Utilities Guide了解您的版本。
这不是您要求的格式。除此之外,您可能需要使用外部工具。
答案 1 :(得分:0)
SquirrelSQL可以为您的数据创建INSERT语句。这对你有用吗?我不知道是否存在从您的应用程序中执行相同操作的库,
答案 2 :(得分:0)
此Unix Shell脚本将APP数据库中所有表的数据转储到〜/ tmp / export / [TABLE] .del文件中。这里的假设是数据库位于当前工作目录的“ db”文件夹中,并且derby安装在〜/ derby下。因此,您会看到,它非常定制(根据我自己的特定需求构建),但易于调整。不,它不会进行SQL转储,它们都将采用derby CSV导出格式。但是,您可以使用这种格式将数据导入PostgreSQL with the COPY语句或MySQL with LOAD DATA INFILE中。希望这会有所帮助。
UPD:我将我的德比脚本放到docker image中,尽情享受!它具有SQL转储;-)
#!/bin/sh
PATH=$PATH:$HOME/derby/bin
DIR="$HOME/tmp/export"
printf "connect 'jdbc:derby:db';\nshow tables in APP;" > show.sql
TABLES=$(ij show.sql | grep ^APP | awk '{print $2}' | sed 's/|//g')
echo $TABLES
for TABLE in $TABLES;
do
echo $TABLE
printf "connect 'jdbc:derby:db';\nCALL SYSCS_UTIL.SYSCS_EXPORT_TABLE (null,'$TABLE','$DIR/$TABLE.del',null,null,null);" > export.sql
ij export.sql
if [ $? -ne "0" ]; then
exit 1
fi
done