6

有什么简单的方法可以从 apache Derby DB 创建完整的 SQL 转储?使用 dblook 工具,我设法将数据库模式转储到 sql 文件,但是似乎没有办法获取包含的数据。

4

3 回答 3

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 工具和实用程序指南

这不是您要求的格式。除此之外,您可能需要求助于外部工具。

于 2010-06-19T21:25:47.347 回答
0

SquirrelSQL 可以为您的数据创建 INSERT 语句。这对你有用吗?我不知道是否存在一个库可以在您的应用程序中执行相同的操作,

于 2010-06-19T21:16:03.403 回答
0

这个 unix shell 脚本将 APP 数据库中所有表的数据转储到 ~/tmp/export/[TABLE].del 文件中。这里的假设是数据库位于当前工作目录中的文件夹“db”中,并且 derby 安装在 ~/derby 下。所以你看,它非常定制(为我自己的特定需求而构建)但很容易调整。不,它不会进行 SQL 转储,它们都将采用 derby CSV 导出格式。但是,您可以使用这种格式通过 COPY语句将数据导入PostgreSQL,或者使用 LOAD DATA INFILE 将数据导入 MySQL。希望这可以帮助。

UPD:我将我的 derby 脚本放在一个docker 映像中,享受吧!它有 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
于 2019-10-01T09:56:13.853 回答