6

Apache Derby DB から完全な SQL ダンプを作成する簡単な方法はありますか? dblook ツールを使用して、データベース スキーマを sql ファイルにダンプすることはできましたが、データを含める方法はないようです。

4

3 に答える 3

6

ダービーには、一括インポート/エクスポートの手順があります。ツールを使用してテーブル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 andUtilitiesGuideを参照してください。

これはあなたが求めているフォーマットではありません。それを超えて、外部ツールに頼る必要があるかもしれません。

于 2010-06-19T21:25:47.347 に答える
0

SquirrelSQL は、データの INSERT ステートメントを作成できます。それはあなたのために働くでしょうか?アプリケーション内から同じことを行うライブラリが存在するかどうかはわかりませんが、

于 2010-06-19T21:16:03.403 に答える
0

この UNIX シェル スクリプトは、APP データベース内のすべてのテーブルのデータを ~/tmp/export/[TABLE].del ファイルにダンプします。ここでの前提は、データベースが現在の作業ディレクトリーのフォルダー「db」にあり、derby が ~/derby の下にインストールされていることです。ご覧のとおり、かなりカスタム (私自身の特定のニーズに合わせて作成) ですが、簡単に調整できます。いいえ、SQL ダンプは作成されません。それらはすべて derby CSV エクスポート形式になります。ただし、この形式を使用して、 COPYステートメントでPostgreSQL にデータをインポートしたり、 LOAD DATA INFILE で MySQL にデータをインポートしたりできます。お役に立てれば。

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
于 2019-10-01T09:56:13.853 に答える