SQLデータベースのデータをCSVファイルにエクスポートすることは、データの共有や解析において非常に便利です。この記事では、主要なデータベース管理システムであるMySQL、PostgreSQL、SQL Server、SQLite、Oracleを使って、データを簡単にCSVファイルにエクスポートする方法を紹介します。
最初に確認:保存先はDBサーバーか手元のPCか
MySQLのINTO OUTFILEとPostgreSQLのSQL COPYでファイル名を指定すると、通常はDBサーバー側へ出力されます。手元のPCへ保存したい場合はクライアント側のGUIやpsqlの\copyを選びます。SQL文、シェルの起動コマンド、各ツールの専用コマンドは実行場所が異なります。
出力する列・行と保存先の権限を確認し、既存ファイルを上書きしない名前で少量を試します。文字コード、ヘッダー、NULL、カンマ・引用符・改行を含む値、日付や先頭ゼロを確認してください。表計算ソフトで開く場合は数式として解釈される値にも注意します。CSVを作ることと第三者へ共有してよいことは別です。
MySQLからCSVファイルへのエクスポート
MySQLのデータをCSVファイルにエクスポートするための具体的な手順を紹介します。
MySQL Workbenchを使ったエクスポート
MySQL Workbenchを利用すると、GUI上で簡単にデータをエクスポートできます。
エクスポート手順
- MySQL Workbenchを起動し、対象のデータベースに接続します。
- エクスポートしたいテーブルを右クリックし、「Table Data Export Wizard」を選択します。
- エクスポートするデータのフィルタリングやオプションを設定し、エクスポート先を指定します。
- 「Next」をクリックし、エクスポート処理を実行します。
コマンドラインを使ったエクスポート
以下はmysqlクライアントなどで接続後に実行するSQLです。OSのコマンドプロンプトへ直接SELECT文を入力するものではありません。出力先はMySQLサーバー側で、FILE権限、secure_file_privの許可範囲、サーバーOSの書込み権限が必要です。既存ファイルへ上書きはできません。権限を広げる前にWorkbench等のクライアント側出力を検討します。
エクスポート手順
- ターミナルまたはコマンドプロンプトを開きます。
- 以下のコマンドを入力して、CSVファイルにエクスポートします。
SELECT * FROM your_table_name
INTO OUTFILE '/approved/export/new_file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';- コマンド実行後、指定したパスにCSVファイルが生成されます。
PostgreSQLからCSVファイルへのエクスポート
PostgreSQLのデータをCSVファイルにエクスポートするための具体的な手順を紹介します。
psqlコマンドを使ったエクスポート
psqlの\copyはpsqlを動かしている側へ保存し、そのOSユーザーの書込み権限を使います。SQLのCOPY … TO ファイル名はサーバー側へ保存するため、保存先と権限を混同しないでください。
エクスポート手順
- ターミナルまたはコマンドプロンプトを開きます。
- 以下のコマンドを入力して、psqlに接続します。
psql -U your_username -d your_database- 手元のpsql実行環境へ保存するには、接続後に以下の\copyを1行で実行します。これはSQLのCOPYとは異なるpsql専用コマンドです。
\copy your_table_name TO '/path/to/your/new_file.csv' WITH (FORMAT csv, HEADER true)- コマンド実行後、指定したパスにCSVファイルが生成されます。
pgAdminを使ったエクスポート
pgAdminを利用すると、GUI上で簡単にデータをエクスポートできます。
エクスポート手順
- pgAdminを起動し、対象のデータベースに接続します。
- エクスポートしたいテーブルを右クリックし、利用中の版のエクスポートメニューを選択します。pgAdminでは「Import/Export Data」のExport側を使います。
- エクスポート形式として「CSV」を選び、エクスポート先を指定します。
- 必要なオプションを設定し、「OK」をクリックしてエクスポート処理を実行します。
SQL ServerからCSVファイルへのエクスポート
SQL ServerのデータをCSVファイルにエクスポートするための具体的な手順を紹介します。
SQL Server Management Studio (SSMS)を使ったエクスポート
SSMSを利用して、データをCSVファイルにエクスポートする方法を説明します。
エクスポート手順
- SQL Server Management Studioを起動し、対象のデータベースに接続します。
- オブジェクトエクスプローラーで対象データベースを右クリックし、「Tasks」→「Export Data」を選択します。テーブル単位の右クリックメニューではありません。
- SQL Server Import and Export Wizardが起動しますので、「Next」をクリックします。
- 「Data Source」で接続先サーバー・データベース・認証を確認します。後続画面でテーブルまたはクエリを選びます。
- 「Destination」セクションで、「Flat File Destination」を選択し、CSVファイルの保存先を指定します。
- エクスポートオプションを設定し、「Next」をクリックします。
- エクスポート内容を確認し、「Finish」をクリックしてエクスポート処理を実行します。
コマンドラインを使ったエクスポート
bcpの-t,はカンマを列終端として使う区切りテキスト出力です。値中のカンマ・引用符・改行をCSVの規則で自動エスケープする汎用CSV生成機能ではありません。以下は、それらを含まないと確認したデータに限る例です。ヘッダーも自動追加されません。一般データにはCSV対応のエクスポート機能を使います。
エクスポート手順
- ターミナルまたはコマンドプロンプトを開きます。
- 以下のコマンドを入力して、bcpを使ってCSVファイルにエクスポートします。
bcp "SELECT * FROM your_database.dbo.your_table" queryout "C:\path\to\your\file.csv" -c -t, -T -S your_server_name- コマンド実行後、指定したパスにCSVファイルが生成されます。
SQLiteからCSVファイルへのエクスポート
SQLiteのデータをCSVファイルにエクスポートするための具体的な手順を紹介します。
sqlite3コマンドを使ったエクスポート
sqlite3コマンドラインツールを利用して、データをCSVファイルにエクスポートする方法です。
エクスポート手順
- ターミナルまたはコマンドプロンプトを開きます。
- 以下のコマンドを入力して、SQLiteデータベースに接続します。
sqlite3 /path/to/your/database.db- SQLiteコマンドラインにて、以下のコマンドを入力し、CSV出力モードに設定します。
.headers on
.mode csv- 次の1回のクエリだけをファイルへ出す.onceを設定します。ドットコマンドにはSQLのセミコロンを付けません。
.once /path/to/your/new_file.csv- エクスポートしたいテーブルのデータを出力します。
SELECT * FROM your_table_name;- エクスポート完了後、SQLiteコマンドラインを終了します。
.quit- 指定したパスにCSVファイルが生成されます。
SQLiteブラウザを使ったエクスポート
GUIツールのSQLiteブラウザ(DB Browser for SQLite)を利用して、データをCSVファイルにエクスポートする方法です。
エクスポート手順
- DB Browser for SQLiteを起動し、対象のデータベースファイルを開きます。
- エクスポートしたいテーブルを選択し、「File」→「Export」→「Table(s) as CSV file…」を選びます。
- CSVファイルの保存先を指定し、必要なオプションを設定します。
- 「OK」をクリックしてエクスポート処理を実行します。
OracleからCSVファイルへのエクスポート
OracleデータベースのデータをCSVファイルにエクスポートするための具体的な手順を紹介します。
Oracle SQL Developerを使ったエクスポート
Oracle SQL Developerを利用して、データをCSVファイルにエクスポートする方法を説明します。
エクスポート手順
- Oracle SQL Developerを起動し、対象のデータベースに接続します。
- エクスポートしたいテーブルを右クリックし、「Export」を選択します。
- 「Export Wizard」が起動するので、「Format」で「CSV」を選びます。
- 「Export Data」のオプションを設定し、エクスポートするデータの範囲や条件を指定します。
- 「Next」をクリックし、保存先のファイルパスを指定します。
- 「Finish」をクリックしてエクスポート処理を実行します。
SQL*Plusを使ったエクスポート
SQL*Plus 12.2以降のCSV出力機能を使います。SQL*Plusの版を確認し、接続時のパスワードはプロンプトで入力します。コマンド行へ直書きしません。SET COLSEPだけでは値中のカンマや引用符を扱うCSV出力にはなりません。
エクスポート手順
- ターミナルまたはコマンドプロンプトを開きます。
- 以下のコマンドを入力して、SQL*Plusに接続します。
sqlplus your_username@your_database- 出力フォーマットをCSV形式に設定します。
SET MARKUP CSV ON DELIMITER , QUOTE ON
SET FEEDBACK OFF
SET HEADING ON
SPOOL /path/to/your/new_file.csv- エクスポートするデータを選択するSQLクエリを実行します。
SELECT * FROM your_table_name;- SPOOLコマンドを終了し、ファイル出力を停止します。
SPOOL OFF- SQL*Plusコマンドラインを終了します。
EXIT- 指定したパスにCSVファイルが生成されます。
まとめ
この記事では、主要なデータベース管理システムであるMySQL、PostgreSQL、SQL Server、SQLite、OracleからデータをCSVファイルにエクスポートする方法を紹介しました。各システムにはそれぞれ異なる手順が必要ですが、基本的な流れは似ています。データベース管理システムに応じた適切な方法を選択し、効率的にデータをエクスポートすることで、データの共有や解析がスムーズに行えます。
公式資料:MySQL SELECT INTO、psql、SQL Serverエクスポートウィザード、SQL*Plus CSV出力。


コメント