web-dev-qa-db-ja.com

--where句を指定したmysqldumpが機能しない

 mysqldump -t -u root -p  mytestdb mytable --where=datetime LIKE '2014-09%'

これは私がやっていることであり、それは返します:

mysqldump: Couldn't find table: "LIKE"

datetimelike 2014-09である「9月のすべての行」を意味するすべての行を返そうとしています。

19
nodejsj

引用符を使用する必要がある場合があります。

mysqldump -t -u root -p  mytestdb mytable --where="datetime LIKE '2014-09%'"
39

LIKEを使用して日付を選択することはお勧めできません。 1つのプロジェクトでこの方法を見ました。これにより、このテーブル列によるインデックスが使用されないため、DBMSの負荷が大きくなり、システムの動作が遅くなります。

期間を選択する必要がある場合は、次のいずれかを使用します。

where datetime between '2014-09-01' and '2014-09-30 23:59:59'
1