JSON ファイルを MongoDB にインポートする

Tahseen Tauseef 2023年6月20日
  1. MongoDB とは
  2. mongoimport コマンド
  3. mongoimport コマンドを使用して MongoDB にデータをインポートする
  4. mongoimport コマンドを使用して JSON ファイルを MongoDB にインポートする
  5. mongoimport コマンドを使用して CSV ファイルを MongoDB にインポートする
  6. mongoimport コマンドを使用して TSV ファイルを MongoDB にインポートする
JSON ファイルを MongoDB にインポートする

このチュートリアルでは、3つのファイル形式 (JSON、CSV、および TSV) すべてを MongoDB データベース インスタンスにすばやく簡単にインポートする方法について説明します。 それでは、これ以上苦労せずに、すぐに始めましょう。

MongoDB とは

MongoDB は NoSQL (非リレーショナル) データベース システムです。

膨大なデータを扱う場合、さまざまなデータを厳密なリレーショナル モデルに適合させるのは大変です。 リレーショナル データベース管理システム (RDBMS) とも呼ばれる SQL データベースは、事前に定義された設計に従って行と列にデータを格納しますが、これは大量のデータを格納するのには理想的ではありません。

MongoDB などの非リレーショナル データベースまたは NoSQL データベースには、開発者がその場で更新できる動的なスキーマがあります。 優れたスケーラビリティと迅速な検索に重点を置いた MongoDB は、SQL データベースに適したソリューションとして浮上しています。

MongoDB の動的スキーマ アーキテクチャにより、アプリケーションの迅速な更新が可能になり、開発者のプログラミングが簡素化されます。

MongoDB は、C、C++、C# など、すべての一般的な言語を公式にサポートしているため、開発者にとって有利です。さらに、net、Go、Java、Node.js、Perl、PHP、Python、Motor、Ruby、Scala、Swift 、Mongod はすべてプログラミング言語の例です。

これにより、開発者は好みの言語を選択できるため、開発時間が短縮され、欠陥が少なくなります。

MongoDB の主な機能

  • 高速クエリ: MongoDB クエリは、一般的なリレーショナル データベースのクエリよりも大幅に高速です (最大 100 倍高速)。 これは、SQL データベースが正規化された形式でデータを格納し、単一のオブジェクトまたはエンティティのクエリで多数のテーブルのデータを結合する必要があり、プロセスが遅くなるためです。

  • 大規模な非構造化データの処理: すべての関連データを 1つのドキュメントに保持する MongoDB のドキュメント データ アーキテクチャにより、膨大な量の非構造化データをシームレスに処理できます。 MongoDB では、ワークロードに敏感な別の方法でクエリを実行することもできます。

  • 水平方向のスケーリング: 水平方向のスケーラビリティは、ほとんどの SQL データベースが不足している重要な領域の 1つです。 彼らは、アドホックにサポートするか、まだ初期段階のテクノロジーのみをサポートしています。

    一方、MongoDB では水平スケーリングが可能で、必要に応じて低コストのコモディティ サーバーを追加できます。

  • シャーディング: MongoDB を使用すると、アプリにリンクされた複数のサーバーにデータを分散することで、膨大な量のデータを保存できます。 1つのサーバーがデータのサイズを管理できない場合、データは別のサーバーに自動的に分割されます。

  • 開発者にとって簡単: MongoDB のデータ構造は、コンピューター言語のデータ構造にマッピングできます。 これにより、開発者が新しい言語を学習し、MongoDB を構成し、データを保存するために必要な時間と労力が削減されます。

mongoimport コマンド

mongoimport コマンドを実行する前に、すべてのユーザーはマシンに MongoDB データベース ユーティリティをインストールする必要があります。

mongoimport コマンドは、mongoexport で作成された拡張 JSON、CSV、または TSV エクスポートからコンテンツをインポートできます。 また、サードパーティのエクスポート プログラムからデータを復元またはインポートすることもできます。

MongoDB データベースの管理に関しては、このコマンドが便利です。 これは、インポートを実行するために開発する特注のスクリプトよりも高速でマルチスレッドです。

JSON 操作用の jq、CSV 操作用の csvkit、さらにはインターネット上のサーバーからデータ ファイルを動的に取得するための curl などの他の MongoDB コマンドライン ツールは、mongoimport コマンドと組み合わせることができます。

mongoimport コマンドの構文は次のとおりです。

`mongoimport` <options> <connection-string> <file>

拡張形式では、次のようになります。

mongoimport --host -u -p --authenticationDatabase --db  --colle --drop --file /name_of_file

次のセクションでは、構文を使用して JSON、CSV、TSV などのさまざまなファイル タイプをインポートするさまざまな方法について説明します。

mongoimport コマンドの適用

チームが開発する Web アプリケーションの種類に関係なく、いくつかのデータを参照したり、データベースに既に存在するコレクションをインポートしたりする状況がいくつかあるかもしれません。 これらのタスクには、MongoDB mongoimport コマンドを使用して、JSON または CSV ファイルのコレクションからデータを取得することが含まれます。

MongoDB は、クライアントが Web アプリケーションを使用する際のバックエンドの情報源として使用される場合があり、mongoimport が役立ちます。

CSV や TSV のファイル形式と比較すると、JSON は階層的なデータ形式であり、MongoDB ドキュメントに匹敵する、エンコードするデータの種類について正確であるため、推奨されます。 その知識があるので、mongoimport でインポートするたびにデータを JSON 形式に変換することはお勧めしません。 代わりに、それを精査して、再編成するかどうかを決定してください。

mongoimport コマンドを使用する際の考慮事項

予防措置として、完全なインスタンス本番バックアップに mongoimportmongoexport を使用しないでください。 JSON は BSON の型のサブセットのみを表すため、mongoimport および mongoexport コマンドはすべての豊富な BSON データ型を確実に保持することはできません。

したがって、mongodumpmongorestore を使用する代わりに、mongodumpmongorestore を使用することをお勧めします。

以下は、BSON タイプ data date および data numberlong のシェル モード プレゼンテーションを利用する mongo シェルでの挿入操作の例で、mongoexport および mongoimport コマンドが厳密なモード表現を使用して情報を維持する方法を示しています。

use test
db.traffic. insert( { _id: 1, volume: NumberLong ('2980001'), date: new Date() } )

data_numberlong に提供される入力は、精度が失われないように引用符で囲む必要があります。 mongoexport を使用してデータをエクスポートすると、次のようになります。

mongoexport -- db test --collection traffic -- out traffic.json

型情報を維持するために、エクスポートされたデータは厳密モード表現で表示されます。

{ "_id" : 1, "volume" : { "$numberLong" : "2980001" }, "date" : { "$date" : "2014-03-13T13:47:42. 483-0400" } }

mongoimport コマンドを使用して MongoDB にデータをインポートする

前述のように、mongoimport は JSON、CSV、または TSV ファイルをインポートできます。 JSON、CSV、または TSV ファイルからデータをインポートする手順を 3つの部分に分けて、わかりやすく簡単に操作できるようにしました。

これらのセクションに進む前に、MongoDB インスタンスが mongoimport Windows、macOS、または Ubuntu アプリケーションに接続されていることを確認してください。 mongoimport を MongoDB データベースに接続するためのいくつかのオプションがありますが、次のような –uri オプションを使用することをお勧めします。

mongoimport --uri 'mongodb+srv: // mycluster-ABCDE.azure.mongodb. net/test?retryWrites=true&w=majority'
   --username='USERNAME'
   --password='PASSWORD'
Note
MongoDB Atlas Deployment を使用している場合は、Database Deployments > Connect に移動して、Atlas 接続文字列を取得します。

Atlas Deployment を利用していない場合は、独自の URI を作成する必要があります。 単一の server\ に接続している場合、URL は mongodb://your.server. ホスト。 name:port/、および replicaset\ を実行して別のホスト名に接続する場合、URI は mongodb://username:password @host1: port,host2:port/?replicaSet=replicasetname のようになります。

mongoimport コマンドを使用して JSON ファイルを MongoDB にインポートする

1つのコレクションから JSON ファイルをインポートするには、次のコードを使用します。

mongoimport --db DB_Name --c collection_ Name --type= json --
file Name-of-the-file-to-import

どこ、

  1. DB_Name は、コレクション Collection_Name を含むデータベースの名前を表します。
  2. type は、ファイル タイプ JSON (オプション フィールド) を指定します。
  3. インポート/復元する JSON ファイルの名前とパスは、name-of-file-to-import で表されます。

別の方法として、上記のコードをよりコンパクトに次のように書くこともできます。

mongoimport -d DB_NAME - c COLLECTION _name --file Name-of-the-file-to-import

作成/インポートしようとしているコレクションと同じ名前の既存のコレクションを削除したい場合は、mongoimport コマンドで –drop フラグを使用できます。

mongoimport -d DB_NAME -c collect._name --drop --file Name-of-file-to-import

JSON データをインポートするときに、MongoDB mongoimport コマンドを使用して、ホストまたはポート番号を変更できます。

mongoimport --host 123. 123. 123.1 --port 4567 -d DB _ NAME -c collection _name --file Name-of-the-file-to-import

デフォルトでは、mongoimport はポート 27017 の localhost で実行中の mongo に接続します。

mongoimport コマンドを使用して CSV ファイルを MongoDB にインポートする

mongoimport コマンドを使用して、ヘッダー行オプションを使用して CSV ファイルをコレクションにインポートできます。 ただし、ヘッダー行の引数は、データではなくフィールド名が含まれているため、最初の行をドキュメントとしてインポートしないように mongoimport コマンドに指示します。

次のコードを使用して、CSV ファイルからコレクションをインポートします。

mongoimport --db DB_Name --collection collect._Name --type=csv --
headerline --file=Name-of-file-to-import

どこ、

  1. DB_Name は、コレクション Collection_Name を含むデータベースの名前を表します。
  2. type は、ファイル タイプ CSV を指定します (オプション フィールド)。
  3. Headline は、CSV ファイルの最初のレコードをフィールド名として取得する mongoimport コマンドの詳細です。
  4. インポートするファイル名は、インポート/復元する CSV ファイルの名前とパスを表します。

mongoimport コマンドを使用して TSV ファイルを MongoDB にインポートする

CSV ファイル形式と比較すると、TSV ファイルは基本的に同じです。 したがって、mongoimport Windows アプリケーションを使用するか、別のアプリケーションを使用するかに関係なく、CSV ファイルと同じ方法で TSV ファイルをインポートできます。

小さな違いが 1つあります。–type=csv, を使用する代わりに、–type=tsv オプションを使用して、mongoimport に新しい形式を伝えることができます。