web-dev-qa-db-ja.com

先月に変更された行のみをエクスポート(ユーザーが定義した日付)

MySQLで、過去1か月などの一定期間に変更された行のみをエクスポートできるかどうかを尋ねていますが、可能であれば、どうすればよいですか?

4
Reynier

これは、タイムスタンプ列を持つテーブルに依存します。

mysqldump には、特定のテーブルをダンプするときに定義できる --where オプションがあります

次のように定義されたmydb.mytabというテーブルがある場合

CREATE TABLE mytable
(
    id INT NOT NULL AUTO_INCREMENT,
    tm TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

そのテーブルで日付範囲を次のように指定できます(2013年6月の場合)。

WHERE_CLAUSE="(tm >= '2013-06-01 00:00:00') AND"
WHERE_CLAUSE="${WHERE_CLAUSE} (tm < '2013-07-01 00:00:00')"
mysqldump -uroot -p mydb mytable --where="${WHERE_CLAUSE}"

タイムスタンプは自動的に更新されるため、これは最も役立ちます。

私はAug 15, 2011に、タイムスタンプに基づいていない--whereを使用してデータのサブセットをダンプする方法についての投稿を書きました: クエリの再現に必要なデータベースのサブセットをmysqldumpすることは可能ですか? ?

目的のテーブルにタイムスタンプ列がない場合は、任意の月に生成されたすべてのバイナリログを保持することをお勧めします。

4
RolandoMySQLDBA