sql >> データベース >  >> NoSQL >> MongoDB

mongoimportを使用してMongoDBに配列としてCSVデータをインポートする

    MongoDBのインポートユーティリティ– mongoimport –CSVデータを配列としてインポートできる新しいパラメーターを導入しました。

    --useArrayIndexFields パラメータは、CSVまたはTSVファイルをインポートするときに、フィールドの自然数を配列インデックスとして解釈します。

    tags.csvというCSVファイルがあるとします。 これは次のようになります:

    tags.0,tags.1,tags.2,tags.3
    html,css,sql,xml

    --useArrayIndexFieldsを使用してインポートできます パラメータ。これにより、mongoimportが発生します。 列ヘッダーの数値を配列インデックスとして解釈します。

    例:

    mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv

    出力:

    2021-01-03T20:55:44.284+1000	no collection specified
    2021-01-03T20:55:44.284+1000	using filename 'tags' as collection
    2021-01-03T20:55:44.297+1000	connected to: mongodb://localhost/
    2021-01-03T20:55:44.330+1000	1 document(s) imported successfully. 0 document(s) failed to import.

    コレクション名を指定しなかったため、tagsというコレクションが作成されました。 (ファイルの名前に基づいて)次に、ドキュメントをインポートしました。

    mongoシェルにジャンプして、コレクションを確認しましょう。

    db.tags.find()

    結果:

    { "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }

    CSVデータがJSON配列としてインポートされていることがわかります。

    ここでも、より適切なフォーマットが使用されているため、配列が見やすくなる可能性があります。

    db.tags.find().pretty()

    結果:

    { "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }

    他のCSVデータと組み合わせる

    前の例のCSVファイルは、配列データのみで構成されていました。ただし、ファイルに他のデータを含めることもできます。

    articles.csvというCSVファイルの例を次に示します。 他のデータが含まれています。

    _id,title,body,tags.0,tags.1,tags.2,tags.3
    1.0,Web,blah,html,css,sql,xml
    2.0,Animals,blah 2,cats,dogs
    3.0,Plants,blah 3,trees
    4.0,Oceans,blah 4

    そのファイルをインポートしましょう:

    mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv

    出力:

    2021-01-03T21:14:38.286+1000	no collection specified
    2021-01-03T21:14:38.287+1000	using filename 'articles' as collection
    2021-01-03T21:14:38.336+1000	connected to: mongodb://localhost/
    2021-01-03T21:14:38.407+1000	4 document(s) imported successfully. 0 document(s) failed to import.

    それでは、mongoシェルにジャンプして、コレクションを確認しましょう。

    db.articles.find()

    結果:

    { "_id" : 1, "title" : "Web", "body" : "blah", "tags" : [ "html", "css", "sql", "xml" ] }
    { "_id" : 3, "title" : "Plants", "body" : "blah 3", "tags" : [ "trees" ] }
    { "_id" : 4, "title" : "Oceans", "body" : "blah 4" }
    { "_id" : 2, "title" : "Animals", "body" : "blah 2", "tags" : [ "cats", "dogs" ] }

    少しきれいにしましょう。

    db.articles.find().pretty()

    結果:

    { "_id" : 1, "title" : "Web", "body" : "blah", "tags" : [ "html", "css", "sql", "xml" ] }
    { "_id" : 3, "title" : "Plants", "body" : "blah 3", "tags" : [ "trees" ] }
    { "_id" : 4, "title" : "Oceans", "body" : "blah 4" }
    { "_id" : 2, "title" : "Animals", "body" : "blah 2", "tags" : [ "cats", "dogs" ] }

    したがって、ドキュメントが完全なJSON / BSONドキュメントとして作成され、関連データの配列が作成されていることがわかります。

    ドキュメント4の配列が作成されていないことに注意してください。これは、CSVファイルに配列データが提供されていないためです。したがって、空の配列でフィールドを作成するのではなく、フィールドや配列を作成しませんでした。


    1. MongoDBで配列を検索し、一致する数で並べ替えます

    2. MongoDBSSPLライセンス変更の更新

    3. ubuntuでmongodサーバーを実行しようとしました:initAndListenの例外:29データディレクトリ/ data / dbが見つかりません。、終了します

    4. Linux環境をMongoDB用に最適化する