69

私の要件は、クエリの結果全体を保存することです

SELECT * FROM document 
WHERE documentid IN (SELECT * FROM TaskResult WHERE taskResult = 2429)

Excelファイルに。

4

8 に答える 8

106

これを実現する一般的な方法は、CSVにエクスポートしてから、CSVをExcelに読み込むことです。ステートメントに句を
含めることで、MySQLコマンドラインツールを使用してこれを行うことができます。INTO OUTFILESELECT

SELECT ... FROM ... WHERE ... 
INTO OUTFILE 'file.csv'
FIELDS TERMINATED BY ','

詳細なオプションについては、このリンクを参照してください。

または、mysqldumpを使用して、-tabオプションを使用してダンプを個別の値の形式で保存することもできます。このリンクを参照してください。

mysqldump -u<user> -p<password> -h<host> --where=jtaskResult=2429 --tab=<file.csv> <database> TaskResult

ヒント:絶対パスを指定せずに、INTO OUTFILE 'output.csv'またはINTO OUTFILE './output.csv'のようなものを使用すると、出力ファイルが。で指定されたディレクトリに保存されshow variables like 'datadir';ます。

于 2012-04-24T11:58:05.590 に答える
7

良い例は、クエリの終了後にそれを書き込む場合で、結合がある場合、または近くにある場合です。

 select 'idPago','fecha','lead','idAlumno','idTipoPago','idGpo'
 union all
(select id_control_pagos, fecha, lead, id_alumno, id_concepto_pago, id_Gpo,id_Taller,
id_docente, Pagoimporte, NoFactura, FacturaImporte, Mensualidad_No, FormaPago,
Observaciones from control_pagos
into outfile 'c:\\data.csv' 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n');
于 2013-07-17T13:04:27.240 に答える
6

以下のクエリを使用します。

 SELECT * FROM document INTO OUTFILE 'c:/order-1.csv' FIELDS TERMINATED BY ','  
 ENCLOSED BY '"' LINES TERMINATED BY '\n';
于 2014-06-28T07:22:33.333 に答える
4

私の場合、SQLの結果をクライアント側のファイルにダンプする必要があります。これは、データベースからデータをオフロードするための最も一般的なユースケースです。多くの場合、サーバーにアクセスできないか、結果をサーバーに書き込みたくありません。

mysql -h hostname -u username -ppwd -e "mysql simple sql statement that last for less than a line" DATABASE_NAME > outputfile_on_the.client

問題は、数行続く複雑なクエリがある場合に発生します。コマンドラインを使用して結果をファイルに簡単にダンプすることはできません。このような場合は、複雑なクエリをlongquery_file.sqlなどのファイルに入れてから、コマンドを実行できます。

mysql -h hn -u un -ppwd < longquery_file.sql DBNAME > output.txt

これは私のために働いた。私の唯一の難しさはタブ文字です。group_cancat(foo SEPARATOR 0x09)に使用することがありますが、出力ファイルには「\t」と書き込まれます。0x09文字はASCIITABです。ただし、この問題は、SQLの結果をファイルにダンプする方法に固有のものではありません。ポケットベルに関連している可能性があります。この問題の答えを見つけたら教えてください。この投稿を更新します。

于 2017-08-25T01:39:02.813 に答える
0

mysql出力をファイルにエクスポートするために私が使用する迅速で汚い方法は

$ mysql <database_name> --tee = <file_path>

次に、エクスポートされた出力(にあります<file_path>)を必要な場所で使用します。

これは、secure-file-privオプションを使用してデータベースが実行されないようにするための唯一の方法であることに注意してください。これによりINTO OUTFILE、前の回答で提案された使用が妨げられます。

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
于 2021-02-22T15:30:06.187 に答える
0

SHOW DATABASESと_SHOW TABLES

INTO OUTFILE物事は機能せず、クエリSHOW TABLESを実行しません。SHOW DATABASES

その場合、次のことができます。

  1. SHOW DATABASES
mysql -u <user> -p <password> -e 'SHOW DATABASES' > <path_to_file>
  1. SHOW TABLES
mysql -u <user> -p <password> -e 'SHOW TABLES FROM <db_name>' > <path_to_file>

ヒント:フラグ-eexecute

参照:

于 2021-04-06T14:20:03.460 に答える
0

私の場合、INTO OUTFILEMySQLユーザーがログインユーザーとは異なるため、機能しませんでした。また、クエリが非常に大きいため、インラインバリアントを使用できませんでした。

私はこれを使うことになりました、そしてそれはとても簡単でした。これはおそらくCSVまたはどちらの出力もサポートしませんが、そのまま出力する必要がある場合は、これで機能します。

mysql> tee /tmp/my.out;

ソース:https ://alvinalexander.com/mysql/how-save-output-mysql-query-file/

于 2021-12-22T14:25:04.497 に答える
-1

これは古い質問ですが、それでもGoogleでの最初の結果の1つです。これを行う最も速い方法は、ODBCクエリまたはMySQLForExcelを使用してMySQLをExcelに直接リンクすることです。後者はOPへのコメントで言及されましたが、CSVへのエクスポートはこれを達成するための最も効率的な方法ではないため、それは本当に独自の答えに値すると感じました。

ODBCクエリ-これはセットアップが少し複雑ですが、はるかに柔軟性があります。たとえば、MySQL For ExcelアドインではWHERE、クエリ式で句を使用できません。この方法の柔軟性により、より複雑な方法でデータを使用することもできます。

MySQL For Excel-クエリで複雑なことをする必要がない場合、または何かをすばやく簡単に実行する必要がある場合は、このアドインを使用します。データベースにビューを作成して、クエリの制限の一部を回避できます。

于 2018-02-25T18:43:28.407 に答える