web-dev-qa-db-ja.com

MySQL Workbenchで1000レコードを超えるクエリ結果をエクスポートする

MySQL Workbenchに約1,000,000レコードのクエリ結果を保存しようとしています。

SELECTを実行すると、1000レコードのみが表示されます(MySQL Workbenchのデフォルトの制限)。制限を変更したり、制限を削除したりできることはわかっていますが、結果パネルに1,000,000件のレコードをロードしたくない(これによりコンピューターがクラッシュする可能性があります)が、結果をファイルに保存したいです。

MySQL Workbenchでは、クエリの結果をファイルに直接保存できますか?または、1,000ではなく結果セット全体を保存しますか?

40
think.arthur

クエリ結果の行の制限を変更するか、制限を完全に削除することができます。

  1. 編集→設定→SQLエディター(タブ)に移動します。 クエリ結果が見つからない場合は、代わりにSQLクエリ(タブ)に移動します。

  2. クエリ結果セクションを探し、行の制限チェックボックスをオフにします

  3. [〜#〜] ok [〜#〜]をクリックします。

  4. クエリを再実行してください。

35
user86614

LOAD DATA INFILEには SELECT ... INTO OUTFILE という兄弟があります。次のように使用できます。

SELECT * FROM mytable
INTO OUTFILE '/tmp/mytable.csv'
FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';

このメソッドは、UIで不要なリソースを使用しません。

@ florian 指摘:ただし、出力ファイルはクライアントマシン上ではなくデータベースサーバー上に作成されます。

また、SELinuxまたはAppArmorなどのセキュリティフレームワークがMySQLの書き込みを妨げる可能性があることに注意してください標準databasesフォルダー外のファイル。ディレクトリがmysqlユーザーによって書き込み可能であっても、permission deniedエラーが発生する場合、これらのいずれかである可能性があります。

37
vbence

「limit $ number」を追加するだけで、SQL句が追加されます。制限を追加しない場合、デフォルトで返される行は1000です。

5
Tonvin