MySQL - SELECT * INTO OUTFILE LOCAL ? のサンプルコードと実行方法
MySQL - SELECT * INTO OUTFILE LOCAL ? の解説
SELECT * INTO OUTFILE LOCAL ?
は、MySQLデータベースからデータをローカルファイルに書き出すためのSQLステートメントです。このステートメントは、SELECT
ステートメントで指定されたデータを、指定されたローカルファイルにテキスト形式で書き出します。
構文
SELECT * INTO OUTFILE LOCAL 'file_name'
FROM table_name;
パラメータ
file_name
: データを書き出すローカルファイルの名前。table_name
: データを取得するテーブルの名前。
オプション
FIELDS TERMINATED BY
: 列区切り文字を指定します。デフォルトはタブ文字です。ENCLOSED BY
: 文字列を囲む文字を指定します。デフォルトは二重引用符です。
例
SELECT * INTO OUTFILE LOCAL 'data.csv'
FROM customers;
この例では、customers
テーブルのすべてのデータを data.csv
という名前のローカルファイルに書き出します。データはCSV形式で書き出され、列区切り文字はタブ文字、行区切り文字は改行文字となります。
注意事項
SELECT * INTO OUTFILE LOCAL
は、MySQLサーバーが実行されているホスト上のローカルファイルにのみ書き出すことができます。- このステートメントを実行するには、
FILE
権限が必要です。 - 既存のファイルは上書きされません。
補足
SELECT * INTO OUTFILE LOCAL ?
は、データベースからデータを簡単にローカルファイルに書き出すことができる便利なステートメントです。- ただし、このステートメントはセキュリティ上のリスクを伴う可能性があるため、注意して使用する必要があります。
- データベースから大量のデータを書き出す場合は、
mysqldump
コマンドなどの他の方法を使用することを検討してください。
-- データベースに接続
USE my_database;
-- データを書き出すファイル名
SET @file_name = 'data.csv';
-- SELECT * INTO OUTFILE LOCAL ステートメント
SELECT *
INTO OUTFILE LOCAL @file_name
FROM customers;
-- データベースから切断
EXIT;
実行方法
このサンプルコードを実行するには、以下の手順に従います。
- MySQLクライアントに接続します。
- 上記のコードをコピーして、MySQLクライアントのクエリウィンドウに貼り付けます。
Enter
キーを押してコードを実行します。
出力結果
data.csv
ファイルには、customers
テーブルのすべてのデータがCSV形式で書き出されます。
- このサンプルコードを実行する前に、
data.csv
ファイルが存在しないことを確認してください。 - データベースに大量のデータがある場合は、ファイルの書き出しに時間がかかる場合があります。
MySQLデータベースからデータをローカルファイルに書き出す他の方法
mysqldump
コマンドは、データベースのバックアップを取るために使用できるコマンドラインツールです。このコマンドを使用して、データベースのテーブルを指定したファイルに書き出すことができます。
mysqldump -u root -p my_database customers > data.csv
このコマンドは、my_database
データベースの customers
テーブルを data.csv
という名前のファイルに書き出します。
PHP スクリプトを使用して、データベースからデータをフェッチし、ローカルファイルに書き出すこともできます。
<?php
// データベースに接続
$db = new PDO('mysql:host=localhost;dbname=my_database', 'root', '');
// データを取得
$query = $db->query('SELECT * FROM customers');
$data = $query->fetchAll();
// データをファイルに書き出す
$file = fopen('data.csv', 'w');
foreach ($data as $row) {
fputcsv($file, $row);
}
fclose($file);
?>
その他のツール
MySQL Workbench や SQLyog などのGUIツールを使用して、データベースからデータをローカルファイルに書き出すこともできます。
以下は、各方法の利点と欠点です。
方法 | 利点 | 欠点 |
---|---|---|
SELECT * INTO OUTFILE LOCAL ? | 簡単 | セキュリティ上のリスク |
mysqldump コマンド | コマンドラインツール | 複雑 |
PHP スクリプト | 柔軟 | プログラミングスキルが必要 |
GUIツール | 使いやすい | インストールが必要 |
mysql sql mariadb