Navicatブログ

MySQLテーブルをCSVにエクスポートする 2022年6月10日 Robert Gravelle

CSVはカンマ区切りの値ファイルで、データを表形式で保存できます。これは長い間、データベース間でデータを転送するための推奨形式でした。最近では、XMLやJSONなどのインターネット主導のフォーマットも大きな注目を集めています。CSVファイルは、テーブルデータを非常に適切に表現し、Microsoft ExcelやGoogleスプレッドシートなど、ほぼ全てのスプレッドシートプログラムで使用できるため、データベースに適しています。今日のブログでは、MySQLでテーブルデータをCSVにエクスポートするいくつかの方法を見ていきます。

コマンドラインの使用

MySQLを含むほとんどのリレーショナルデータベースには、CSVとの間でエクスポートおよびインポートするためのコマンドが用意されています。

–secure-file-privオプションを使用してMySQLサーバーインスタンスを起動していることを確認してください。LOAD DATAやSELECT INTO FILEなどのステートメントを使用して、MySQLがデータをインポートおよびエクスポートするディレクトリを設定します。次のコマンドを使用して、現在の設定を確認できます:

SHOW VARIABLES LIKE "secure_file_priv"  

あとは、データを選択し、出力ファイルの場所を指定するだけです。テーブル全体を出力するステートメントを次に示します。

TABLE tableName 
INTO OUTFILE 'path/outputFile.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';

SELECTクエリと同様に、データをフィルター処理することもできます。列と値の両方をフィルター処理する例を次に示します:

SELECT columnName, ...
FROM tableName
WHERE columnName = 'value'
LIMIT 1000
INTO OUTFILE 'path/outputFile.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';

列ヘッダーを含めたいですか?これは、UNIONステートメントを使用して簡単に実行できます:

(SELECT 'columnHeading', ...)
UNION
(SELECT column, ...
FROM tableName
INTO OUTFILE 'path-to-file/outputFile.csv’'
FIELDS ENCLOSED BY '"' 
TERMINATED BY ','
ESCAPED BY '"'
LINES TERMINATED BY '\n')

mysqldumpの使用

mysqldumpは、テーブル、データベース、およびサーバー全体をエクスポートするためにMySQLが提供するコマンドラインユーティリティです。さらに、バックアップとリカバリにも利用できます。コマンドプロンプト/ターミナルで次のコマンドを発行して、テーブルをエクスポートします:

mysqldump -u [username] -p -t -T/path/to/directory [database] [tableName] --fields-terminated-by=,

Navicatのエクスポートウィザードの使用

Navicat 16 for MySQLには、非常に強力なエクスポート(およびインポート)ウィザードが付属しており、.xlsx、.json、および.sqlを含む複数の形式でデータをエクスポートできます。エクスポートウィザードを開始するためには、該当するテーブルを選択し、右クリックして“エクスポートウィザード“を選択し、形式を選択します:

export_formats (50K)

1 つのテーブル、データベース全体、またはその間の任意のものをエクスポートすることを選択できます:

select_tables (71K)

全ての列に関心がない場合は、必要なフィールドを正確に選択することもできます:

select_fields (40K)

Navicatは、ヘッダー、区切り文字、エラーハンドラなどを含む豊富なオプションをサポートしています:

other_options (49K)

結論

CSVは完全な形式ではなく、制限があります。例えば、この形式でデータ型や数式を保存することはできません。そうは言っても、CSVは依然として非常に重要なデータ転送形式です。全てのDBAが熟知している必要があるものです。

ブログのアーカイブ
シェア