2016-07-14 3 views
1

rsync(mydb.sql.gz)を使用してダウンロードできる公開データベースがあります。これはかなり大きな圧縮ファイルで、約130MBです。圧縮されていない場合、データベースは約1.3GiBです。毎日新しいデータが追加されます。リモートデータベースの新しいデータでローカルコピーを更新する最も効率的な方法は何ですか?.gzファイルを使用したSQLデータベースの更新

+0

データが新しいレコードのみ、またはデータベース全体に送信されていますか? –

+0

あなたはどのDBMSについて話していますか? –

+0

@RobそれはDB全体です。 – GoldenJoe

答えて

2

インポート中にそのファイルを解凍することができます。 MySQLを仮定すると、このコマンドは動作するはずです:

gunzip -c mydb.sql.gz | mysql mydb -h host -u user -p 

注:-c手段はstdoutに出力を書き込みます。

BTW:rsyncを使用して圧縮ファイルをダウンロードすると、あまり効果がない場合があります。圧縮されていないデータがわずかに変更されても、圧縮された同等のデータが大きく変更される可能性があります。毎日ファイル全体をダウンロードするには、単にwgetまたはcurlを使用する方が良いでしょう。

+0

さて、私はここでいくつかの基本的なことを理解していないかもしれません。私が間違っているなら、私を修正してください。 最初に、私はファイルを圧縮すると、どのように変更されたのか分かっているので、rsyncはファイル全体を再ダウンロードすると思っていました。データプロバイダは命令のrsyncサンプルしか持っていないので、私はこれをとにかくファイルを取得する唯一の方法と想定しました。 2番目に、私が実際には必要としないDBの古い行を削除したりアーカイブしたりしたらどうなりますか?彼らは新しい行と一緒に追加されますか? – GoldenJoe

+0

はい、圧縮されていないファイルを変更すると、圧縮されたファイルが大きく変更されるため、rsyncは実質的にファイル全体を再度ダウンロードし、rsyncを使ってrsyncを使用することによる利益を無効にします。実際には、rsyncはおそらくファイルを変更する時間を無駄にするでしょう。あなたの2番目の質問について:私の前提は、毎日の画像が完全なデータベースであり、あなたがローカルに持っていたものを一掃し、毎日のgzファイルに基づいて新しいデータベースを作成するということでした。毎日ダンプに入っているものが何であれ、あなたが望まないものは毎日戻ってきます。 – Asaph

関連する問題