GNU/Linux >> Linux の 問題 >  >> Linux

MySQLからCSVにテーブルをエクスポートする方法

はじめに

限られた数のアプリケーションのみが生のMySQLテーブルを読み取ります。 CSVファイルは、さまざまなデータベースアプリケーションで機能する可能性がはるかに高くなります。 CSVはデータベースの標準形式であり、コンマで値をさまざまな行や列から区別します。 CSVファイルの追加の利点は、人間が読める形式であるということです。

この詳細ガイドでは、MySQLデータベースをCSVファイルにエクスポートする方法を説明します。

前提条件

  • コマンドライン/ターミナルウィンドウへのアクセス
  • rootまたはsudo権限を持つユーザーアカウント
  • root権限を持つMySQLユーザーアカウント
  • 事前設定されたphpMyAdminアカウント(オプション)

phpMyAdminを使用してMySQLをCSVにエクスポート

phpMyAdminツールは、MySQLデータベースを管理するためのグラフィカルインターフェイスを提供します。これを使用して、追跡されたデータベースをCSVファイルにエクスポートできます。

  1. phpMyAdminにログインすることから始めます。
  2. 次に、データベースをクリックします 上部のバナーのボタン。
  1. データベースのリストで、エクスポートするデータベースへのリンクをクリックします。この例では、ユーザーを選択しました データベース。
  1. 次の画面には、そのデータベース内のテーブルのリストが表示されます。エクスポートするテーブルのチェックボックスをオンにします。
  2. エクスポートをクリックします バナーのボタン。
  1. エクスポート方法を終了します そのまま設定します。 フォーマットを使用する ドロップダウンメニューでCSVを選択し、[移動]をクリックします 。
  1. 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ファイルを別のシステムにコピーできます。


Linux
  1. データベース間でMySQLテーブルをコピーする方法

  2. MYSQL MariaDB でエクスポート データベースをインポートする方法

  3. ある mysql データベースから別の mysql データベースにテーブルをコピーする方法

  1. 破損したMysqlデータベーステーブルを修復する方法

  2. bash から mysql クエリをフィードする方法

  3. MySQL から権限をエクスポートして、新しいサーバーにインポートするにはどうすればよいですか?

  1. WorkbenchでMySQLデータベースを作成する方法

  2. PostgreSQLテーブルをCSVにエクスポートする方法

  3. CSVファイルをMySQLデータベースにインポートする方法は?