Apache Derby DB から完全な SQL ダンプを作成する簡単な方法はありますか? dblook ツールを使用して、データベース スキーマを sql ファイルにダンプすることはできましたが、データを含める方法はないようです。
3 に答える
ダービーには、一括インポート/エクスポートの手順があります。ツールを使用してテーブル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を参照してください。
これはあなたが求めているフォーマットではありません。それを超えて、外部ツールに頼る必要があるかもしれません。
SquirrelSQL は、データの INSERT ステートメントを作成できます。それはあなたのために働くでしょうか?アプリケーション内から同じことを行うライブラリが存在するかどうかはわかりませんが、
この 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