mongoexportコマンドとMongoDB Compassでできる!MongoDBからCSVへのコレクションエクスポート
MongoDBからCSVへコレクションをエクスポートする方法
mongoexportコマンドを使用する
mongoexport
コマンドは、MongoDBに付属のツールで、コレクションを様々な形式でエクスポートすることができます。CSV形式でエクスポートするには、以下のコマンドを使用します。
mongoexport --db <データベース名> --collection <コレクション名> --out <出力ファイル名> --csv
<データベース名>
: エクスポートしたいコレクションを含むデータベースの名前<コレクション名>
: エクスポートしたいコレクションの名前<出力ファイル名>
: エクスポートしたデータを保存するCSVファイルの名前
オプションで、以下のコマンドを追加することで、エクスポートするフィールドを指定したり、区切り文字を変更したりすることができます。
--fields <フィールド名1>,<フィールド名2>,...
: エクスポートするフィールドをカンマ区切りで指定--fieldSeparator <区切り文字>
: CSVファイルのフィールド間の区切り文字を指定 (デフォルトはカンマ)
例えば、test
データベースのusers
コレクションをusers.csv
という名前のCSVファイルにエクスポートし、name
とemail
フィールドのみを出力するには、以下のコマンドを使用します。
mongoexport --db test --collection users --out users.csv --csv --fields name,email
MongoDB Compassを使用する
MongoDB Compassは、MongoDBをGUIで操作できるツールです。Compassを使用してコレクションをCSV形式でエクスポートするには、以下の手順を行います。
- Compassでエクスポートしたいコレクションに接続します。
Export Collection
ボタンをクリックします。CSV
形式を選択し、出力ファイルの名前と場所を指定します。- オプションで、エクスポートするフィールドを指定したり、エンコーディングを変更したりすることができます。
Export
ボタンをクリックして、エクスポートを実行します。
スキーマレスデータのエクスポート
MongoDBはスキーマレスなデータストアであるため、コレクション内のドキュメントは構造が異なる場合があります。mongoexport
コマンドを使用する場合は、--jsonArray
オプションを追加することで、各ドキュメントをJSON形式で出力することができます。その後、JSONデータをCSV形式に変換するツールを使用して、CSVファイルを作成することができます。
MongoDB Compassを使用する場合は、Advanced
タブでJSON
形式を選択することで、各ドキュメントをJSON形式で出力することができます。
注意事項
- 大規模なコレクションをエクスポートする場合は、パフォーマンス上の問題が発生する可能性があります。その場合は、複数回に分けてエクスポートするか、
mongoexport
コマンドの--batchSize
オプションを使用して、エクスポートするドキュメントの数を制限することができます。 - エクスポートする前に、必ずバックアップを取っておいてください。
mongoexport --db test --collection users --out users.csv --csv --fields name,email
- MongoDB Compassで
test
データベースのusers
コレクションに接続します。 Fields
タブで、name
とemail
フィールドのみを選択肢します。
- 上記のコードはあくまでサンプルであり、必要に応じて変更する必要があります。
Pythonなどのプログラミング言語を使用して、MongoDBからデータをクエリし、CSV形式で保存するスクリプトを作成することができます。これにより、より柔軟なエクスポート処理を行うことができます。
例:Pythonスクリプト
import pymongo
import csv
# MongoDBへの接続
client = pymongo.MongoClient('mongodb://localhost:27017/')
db = client['test']
collection = db['users']
# データのクエリ
cursor = collection.find({})
# CSVファイルへの書き込み
with open('users.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
# ヘッダー行の書き込み
writer.writerow(['name', 'email'])
# ドキュメントの書き込み
for document in cursor:
writer.writerow([document['name'], document['email']])
ETLツールを使用する
TalendやPentahoなどのETLツールを使用して、MongoDBからCSVへデータをエクスポートすることができます。ETLツールは、データの変換やロードを自動化できるため、大規模なデータのエクスポートに適しています。
クラウドサービスを使用する
MongoDB Atlasなどのクラウドサービスは、MongoDBからCSVへデータをエクスポートする機能を提供している場合があります。クラウドサービスを使用すると、インフラストラクチャを管理することなく、簡単にデータをエクスポートすることができます。
それぞれの方法の比較
方法 | 利点 | 欠点 |
---|---|---|
mongoexportコマンド | シンプルで使いやすい | 大規模なデータのエクスポートには不向き |
MongoDB Compass | GUIで操作できる | 機能が限られている |
スクリプト | 柔軟性が高い | プログラミングスキルが必要 |
ETLツール | 大規模なデータのエクスポートに適している | 設定が複雑 |
クラウドサービス | 簡単で使いやすい | コストがかかる場合がある |
mongodb csv schemaless