MySQLのクエリ結果をCSV形式で画面に表示する方法|CONCAT()関数の使い方を解説
MySQLのクエリ結果をCSV(カンマ区切り値)形式でファイルに出力せず、そのまま画面に表示したい場合には、CONCAT()関数が便利です。各カラムの値をカンマで連結することで、1つの文字列としてCSV形式の出力を得られます。
基本構文
CSV形式で出力するための基本的な構文は以下のとおりです。
mysql> SELECT CONCAT(StudentId,',',StudentName,',',StudentAge) AS CSVFormat FROM CSVFormatOutputs;
それでは、実際にテーブルを作成しながら動作を確認していきましょう。
サンプルテーブルの作成
まずは動作確認用のテーブルを作成します。以下のクエリを実行してください。
mysql> CREATE TABLE CSVFormatOutputs
-> (
-> StudentId int NOT NULL AUTO_INCREMENT,
-> StudentName varchar(20),
-> StudentAge int,
-> PRIMARY KEY(StudentId)
-> );
Query OK, 0 rows affected (1.15 sec)テストデータの挿入
続いて、INSERT文を使ってレコードをいくつか登録します。
mysql> INSERT INTO CSVFormatOutputs(StudentName,StudentAge) VALUES('Mike',23);
Query OK, 1 row affected (0.26 sec)
mysql> INSERT INTO CSVFormatOutputs(StudentName,StudentAge) VALUES('John',26);
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO CSVFormatOutputs(StudentName,StudentAge) VALUES('Sam',19);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO CSVFormatOutputs(StudentName,StudentAge) VALUES('Carol',27);
Query OK, 1 row affected (0.59 sec)
mysql> INSERT INTO CSVFormatOutputs(StudentName,StudentAge) VALUES('Bob',24);
Query OK, 1 row affected (0.15 sec)登録したレコードの確認
SELECT文ですべてのレコードを表示し、データが正しく登録されているか確認しましょう。
mysql> SELECT * FROM CSVFormatOutputs;
実行結果は以下のとおりです。
+-----------+-------------+------------+ | StudentId | StudentName | StudentAge | +-----------+-------------+------------+ | 1 | Mike | 23 | | 2 | John | 26 | | 3 | Sam | 19 | | 4 | Carol | 27 | | 5 | Bob | 24 | +-----------+-------------+------------+ 5 rows in set (0.00 sec)
CONCAT()でCSV形式に変換して表示する
ここからが本題です。CONCAT()関数を使い、各行の値をカンマで連結してCSV形式の文字列として画面に表示してみます。
mysql> SELECT CONCAT(StudentId,',',StudentName,',',StudentAge) AS CSVFormat FROM CSVFormatOutputs;
実行すると、以下のように各レコードが「1,Mike,23」のようなCSV形式で1列にまとまって出力されます。
+------------+ | CSVFormat | +------------+ | 1,Mike,23 | | 2,John,26 | | 3,Sam,19 | | 4,Carol,27 | | 5,Bob,24 | +------------+ 5 rows in set (0.00 sec)
応用:ヘッダー行も一緒に出力したい場合
見出しとなるヘッダー行も含めて表示したい場合は、UNION ALLを組み合わせると簡単に実現できます。
mysql> SELECT 'StudentId,StudentName,StudentAge' AS CSVFormat
-> UNION ALL
-> SELECT CONCAT(StudentId,',',StudentName,',',StudentAge) FROM CSVFormatOutputs;このようにCONCAT()関数を活用すれば、INTO OUTFILEでファイルに書き出すことなく、ターミナルやクライアントツールの画面上に直接CSV形式の結果を表示できます。データの簡易チェックや他システムへの貼り付け用データ作成などにぜひ活用してください。
-
MySQLのタイムゾーン設定方法!現在時刻の確認から変更手順まで解説
MySQLを運用していると、サーバーのタイムゾーンが意図したものと異なり、日時データにずれが生じることがあります。本記事では、MySQLで現在時刻を確認する方法と、タイムゾーンを設定・変更する具体的な手順をわかりやすく解説します。 現在の時刻を確認する方法 MySQLで現在の日時を知りたい場合は、SELECT文と組み合わせてnow()関数を使用します。クエリは以下の通りです。 mysql> SELECT now(); 上記のクエリを実行すると、現在の日時が取得できます。実行結果は次のようになります。 +---------------------+ | now()
-
MySQLのクエリ結果をテキストファイル(.txt)やExcelで使える形式に保存する方法
MySQLでクエリの出力結果をテキストファイルに保存したい場合は、INTO OUTFILEコマンドを使用します。この記事では、実際にテーブルを作成し、データを登録したうえで、クエリ結果を「QueryOutput.txt」というファイルに出力するまでの一連の手順を具体的な例とともに解説します。 1. サンプルテーブルの作成 まず、出力確認用のテーブルを作成しましょう。 mysql> create table SaveintoTextFile -> ( -> id int, -> name varchar(100) -> ); Query