はじめに
限られた数のアプリケーションのみが生のMySQLテーブルを読み取ります。 CSVファイルは、さまざまなデータベースアプリケーションで機能する可能性がはるかに高くなります。 CSVはデータベースの標準形式であり、コンマで値をさまざまな行や列から区別します。 CSVファイルの追加の利点は、人間が読める形式であるということです。
この詳細ガイドでは、MySQLデータベースをCSVファイルにエクスポートする方法を説明します。
前提条件
- コマンドライン/ターミナルウィンドウへのアクセス
- rootまたはsudo権限を持つユーザーアカウント
- root権限を持つMySQLユーザーアカウント
- 事前設定されたphpMyAdminアカウント(オプション)
phpMyAdminを使用してMySQLをCSVにエクスポート
phpMyAdminツールは、MySQLデータベースを管理するためのグラフィカルインターフェイスを提供します。これを使用して、追跡されたデータベースをCSVファイルにエクスポートできます。
- phpMyAdminにログインすることから始めます。
- 次に、データベースをクリックします 上部のバナーのボタン。
- データベースのリストで、エクスポートするデータベースへのリンクをクリックします。この例では、ユーザーを選択しました データベース。
- 次の画面には、そのデータベース内のテーブルのリストが表示されます。エクスポートするテーブルのチェックボックスをオンにします。
- エクスポートをクリックします バナーのボタン。
- エクスポート方法を終了します そのまま設定します。 フォーマットを使用する ドロップダウンメニューでCSVを選択し、[移動]をクリックします 。
- CSVファイルを保存する場所を指定するダイアログボックスが表示されます。
コマンドラインを使用してMySQLからCSVにエクスポート
テーブル内のすべてのデータを選択し、それを保存する場所を指定することで、飾り気のないエクスポートを実行できます。
まずMySQLシェルを開き、エクスポートするデータベースに切り替えます。
次のステートメントを入力します:
SELECT * FROM myTable
INTO OUTFILE '\tmp\myExportFile.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY '"'
LINES TERMINATED BY '\r\n';
myTable
を置き換えます データベースからのテーブルの実際の名前を使用します。 \tmp\myExportFile.csv
を置き換えることができます 他のファイル名または場所で。必ず.csv
を保持してください 最後にファイル名。
MySQLからエクスポートするための追加オプション
テーブルからエクスポートする個々のデータセットを指定するには:
SELECT column1, column2, column3, column4
FROM myTable
WHERE column2 = 'value';
column1
を置き換えます (および残りの部分)エクスポートする列の実際の名前。必ずFROM
を使用してください エクスポート元のテーブルを指定するコマンド。 WHERE
ステートメントはオプションであり、特定の値を含む行のみをエクスポートできます。 value
を置き換えます エクスポートする実際の値を使用します。例:
SELECT order_date, order_number, order_status
FROM current_orders
WHERE order_status='pending';
CSVファイルのエクスポートとタイムスタンプ
次のコマンドを使用してCSVファイルにエクスポートし、ファイルが作成された時刻のタイムスタンプを追加します。
SET @TS = DATE_FORMAT(NOW(),'_%Y_%m_%d_%H_%i_%s');
SET @FOLDER = '\tmp';
SET @PREFIX = 'myTable';
SET @EXT = '.csv';
SET @CMD = CONCAT("SELECT * FROM myTable INTO OUTFILE '",@FOLDER,@PREFIX,@TS,@EXT,
"' FIELDS ENCLOSED BY '\"'
TERMINATED BY ';'
ESCAPED BY '\"'","
LINES TERMINATED BY '\r\n';");
PREPARE statement FROM @CMD;
EXECUTE statement;
いつものように、 myTable
を置き換えます エクスポートするテーブルの実際の名前を使用します。
列ヘッダーを使用してエクスポート
UNION
を使用する エクスポートされたファイルに列ヘッダーを追加するステートメント:
(SELECT 'column1','column2','column3','column4')
UNION
(SELECT column1, column2, column3, column4
FROM myTable
INTO OUTFILE '\tmp\myExportFile.csv'
FIELDS ENCLOSED BY '"' TERMINATED BY ';' ESCAPED BY '"'
LINES TERMINATED BY '\r\n')
NULL値の処理
データベースにnull(空の)値がある場合、このプロセスはそれらを文字 N
としてエクスポートします。 。 NULL
を置き換えることができます より意味のある別のテキスト文字列を含む値:
SELECT column1, column2, IFNULL(column3, 'N/A')
FROM myTable INTO OUTFILE '\tmp\myExportFile.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY '"' LINES
TERMINATED BY '\r\n');
この場合、 IFNULL
コマンドは、 column3
で空の値を検索します 。それらが見つかると、テキスト文字列 N/A
に置き換えられます。 。
mysqldumpを使用してMySQLをCSVにエクスポート
mysqldumpを使用できます MySQLデータベースをCSVファイルにエクスポートするアプリケーション。コマンドプロンプトに次のように入力します。
mysqldump --tab=/var/lib/mysql-files/ --fields-enclosed-by='"' --fields-terminated-by=',' --lines-terminated-by='\n' myTable
このコマンドは、データベースのコピーを作成します myTable
/var/lib/mysql-files
にあります 。
CSVエンジンを使用してMySQLをCSVにエクスポート
場合によっては、MySQLのCSVエンジンを使用してテーブルを変更できます。 MySQLテーブルにインデックスがある場合、またはテーブルが auto_increment を使用している場合、このメソッドは機能しません。 。次のコマンドを使用します:
ALTER TABLE myTable ENGINE=CSV;
このステートメントは、データベースの形式をCSVに変更します。その後、CSVファイルを別のシステムにコピーできます。