MYSQLは特定の行のみをダンプします


95

データベースの数行のmysqlダンプを実行しようとしています。次に、ダンプを使用して、これらの数行を別のデータベースにアップロードできます。私が持っているコードは機能していますが、すべてをダンプします。mysqldumpでテーブルの特定の行のみをダンプするにはどうすればよいですか?

これが私のコードです:


mysqldump --opt --user=username --password=password lmhprogram myResumes  --where=date_pulled='2011-05-23' > test.sql

回答:


141

--whereオプションを修正してください。次のような有効なSQL WHERE句である必要があります。

--where="date_pulled='2011-05-23'"

引用符の外に列名があります。


1
本当に必要なことをしてくれてありがとう。お手伝いありがとう!
Shattuck

@AJ、素晴らしい情報!ありがとう!
Roman Newaza、2013年

2
以下のためのIN条件、我々は単純に使用することができます--where="id IN(1,2,6,10)"。どこIDはテーブルの列です。Ref --where
Yogesh

9
私のような誰かがこれを使用してビッグデータダンプを別のサーバーにパイプし、途中で破損した場合--no-create-info、where句と一緒に指定しないと、新しいダンプによってテーブルが再作成され、すでに転送されたデータが削除されます。当たり前かもしれませんが、それは今私を2回捕まえました。
georgiecasey

列名が引用符の外にあることが問題ではなかったことに注意してください。これはシェルコマンドであるため、文字列のシェル構文を記述する必要がありますdate_pulled='2011-05-23'。つまり、単一引用符文字を引用符で囲むかエスケープする必要があるため、シェル構文で引用符として解釈されるのではなく、文字列に含まれます。全体を二重引用符で囲むとそのようになりますが、そうすることもできます--where=date_pulled="'2011-05-23'"(または--where=date_pulled=\'2011-05-23\'、さらには--where=date_pulled"'"2011-05-23"'")。
ベン

32

「where」句を引用する必要があります。

試す

mysqldump --opt --user=username --password=password lmhprogram myResumes  --where="date_pulled='2011-05-23'" > test.sql

1
それがまさに私が必要としていたことです。別の人があなたの直前に答え、私は彼の答えを選びましたが、私はあなたを助けに賛成しました。
Shattuck

1
次のようなクエリを使用する別の方法があります。CREATE TABLE new_table AS(SELECT * FROM myResumes WHERE where = date_pulled = '2011-05-23'); その後、mysqldumpを介してこのテーブルをエクスポートできます。
Vinayagam、2015年

1

LIKE条件を使用して、このコードを特定のテーブル行に使用します。

mysqldump -u root -p sel_db_server case_today --where="date_created LIKE '%2018
%'" > few_rows_dump.sql
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.