JSON ファイルを MongoDB にインポートする
- MongoDB とは
-
mongoimport
コマンド -
mongoimport
コマンドを使用して MongoDB にデータをインポートする -
mongoimport
コマンドを使用して JSON ファイルを MongoDB にインポートする -
mongoimport
コマンドを使用して CSV ファイルを MongoDB にインポートする -
mongoimport
コマンドを使用して TSV ファイルを 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
コマンドを使用する際の考慮事項
予防措置として、完全なインスタンス本番バックアップに mongoimport
と mongoexport
を使用しないでください。 JSON は BSON の型のサブセットのみを表すため、mongoimport
および mongoexport
コマンドはすべての豊富な BSON データ型を確実に保持することはできません。
したがって、mongodump
と mongorestore
を使用する代わりに、mongodump
と mongorestore
を使用することをお勧めします。
以下は、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'
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
どこ、
DB_Name
は、コレクションCollection_Name
を含むデータベースの名前を表します。type
は、ファイル タイプ JSON (オプション フィールド) を指定します。- インポート/復元する 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
どこ、
DB_Name
は、コレクションCollection_Name
を含むデータベースの名前を表します。type
は、ファイル タイプ CSV を指定します (オプション フィールド)。Headline
は、CSV ファイルの最初のレコードをフィールド名として取得するmongoimport
コマンドの詳細です。インポートするファイル名
は、インポート/復元する CSV ファイルの名前とパスを表します。
mongoimport
コマンドを使用して TSV ファイルを MongoDB にインポートする
CSV ファイル形式と比較すると、TSV ファイルは基本的に同じです。 したがって、mongoimport
Windows アプリケーションを使用するか、別のアプリケーションを使用するかに関係なく、CSV ファイルと同じ方法で TSV ファイルをインポートできます。
小さな違いが 1つあります。–type=csv,
を使用する代わりに、–type=tsv
オプションを使用して、mongoimport
に新しい形式を伝えることができます。