質問

連絡先情報を使用してCSVをインポートしようとしています。

Name,Address,City,State,ZIP  
Jane Doe,123 Main St,Whereverville,CA,90210  
John Doe,555 Broadway Ave,New York,NY,10010 

これを実行すると、データベースにドキュメントが追加されていないようです。

$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline

トレースは言います imported 1 objects, 、しかし、マンゴのシェルを起動して走っています db.things.find() 新しいドキュメントは表示されません。

何が足りないの?

役に立ちましたか?

解決

あなたの例は、MongoDB 1.6.3と1.7.3で私のために働きました。以下の例は1.7.3のものでした。 Mongodbの古いバージョンを使用していますか?

$ cat > locations.csv
Name,Address,City,State,ZIP
Jane Doe,123 Main St,Whereverville,CA,90210
John Doe,555 Broadway Ave,New York,NY,10010
 ctrl-d
$ mongoimport -d mydb -c things --type csv --file locations.csv --headerline
connected to: 127.0.0.1
imported 3 objects
$ mongo
MongoDB shell version: 1.7.3
connecting to: test
> use mydb
switched to db mydb
> db.things.find()
{ "_id" : ObjectId("4d32a36ed63d057130c08fca"), "Name" : "Jane Doe", "Address" : "123 Main St", "City" : "Whereverville", "State" : "CA", "ZIP" : 90210 }
{ "_id" : ObjectId("4d32a36ed63d057130c08fcb"), "Name" : "John Doe", "Address" : "555 Broadway Ave", "City" : "New York", "State" : "NY", "ZIP" : 10010 }

他のヒント

Mongoimportが私にエラーを与えなかったが、0のレコードのインポートを報告する同様の問題に困惑しました。 「Windows Comma Assed(.CSV)」形式を指定せずに、デフォルトの「save as ..」「xls as csv」を使用して、MAC 2011バージョンのOSX Excelを使用して機能しなかったファイルを保存していました。このサイトを調査し、「Windows Comma Separted(.CSV)」形式を再度保存しようとした後、Mongoimportは正常に機能しました。Mongoimportは各ラインの新しいライン文字を期待しており、デフォルトのMac Excel 2011 CSVエクスポートはそれを提供しなかったと思います。各ラインの最後のキャラクター。

次のコマンドを実行する必要があります。

mongoimport --host=127.0.0.1 -d database_name -c collection_name --type csv --file csv_location --headerline

-dはデータベース名です

-cはコレクション名です

-headerline -type csvまたは-type tsvを使用している場合、最初の行をフィールド名として使用します。それ以外の場合、Mongoimportは別個のドキュメントとして最初の行をインポートします。

詳細については: Mongoimport

生産の種類の環境で作業している場合、ほとんどの場合、認証する必要があります。このようなものを使用して、適切な資格情報を持つ正しいデータベースに対して認証できます。

mongoimport -d db_name -c collection_name --type csv --file filename.csv --headerline --host hostname:portnumber --authenticationDatabase admin --username 'iamauser' --password 'pwd123'

ファイルの最後に空白行があることを確認してください。そうしないと、最後の行はMongoimportのいくつかのバージョンで無視されます

これをMongoimport Shellで使用します

mongoimport --db db_name --collection collection_name --type csv --file C:\\Your_file_path\target_file.csv --headerline

タイプはCSV/TSV/JSONを選択できますが、CSV/TSVのみを使用できます --headerline

詳細を読むことができます オフカル文書.

ロバート・スチュワートは、Mongoimportに輸入する方法についてすでに答えています。

CSVをエレガントにインポートする簡単な方法を提案しています 3t mongochef ツール(3.2+バージョン)。将来誰かを助けるかもしれません。

  1. コレクションを選択するだけです
  2. インポートするファイルを選択します
  3. インポートするデータを解除することもできます。また、多くのオプションがあります。
  4. インポートされたコレクション

見る ビデオをインポートする方法

最初にあなたはから出てくるべきです mongo シェルしてから実行します mongoimport このようなコマンド:

Manojs-MacBook-Air:bin Aditya$ mongoimport -d marketdata -c minibars 
--type csv 
--headerline
--file '/Users/Aditya/Downloads/mstf.csv'

2017-05-13T20:00:41.989+0800    connected to: localhost
2017-05-13T20:00:44.123+0800    imported 97609 documents
Manojs-MacBook-Air:bin Aditya$

ロバート・スチュワートの答えは素晴らしいです。

私は、あなたがあなたのフィールドを-columhaveTypesと - このようなフィールドで入力することもできると付け加えたいと思います:

mongoimport -d myDb -c myCollection --type csv --file myCsv.csv 
  --columnsHaveTypes --fields "label.string(),code.string(),aBoolean.boolean()"

(フィールド間のコンマの後にスペースがないように注意してください)

他のタイプについては、こちらのドキュメントを参照してください。 https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-mongoimport-columnshaveTypes

3.4バージョンについては、次の構文を使用してください。

mongoimport -u "username" -p "password" -d "test" -c "collections" --type csv --file myCsv.csv --headerline

3日後、私はついに自分でそれを作りました。私をサポートしてくれたすべてのユーザーに感謝します。

c: wamp mongodb bin> mongoexport - db proj_mmm - collection offerings - csv - fieldfile offerings_fields.txt -out offerings.csv

Mongoimportを実行した後、これを使用してください

インポートされたオブジェクトの数を返します

use db
db.collectionname.find().count()

オブジェクトの数を返します。

使用する :

mongoimport -d 'database_name' -c 'collection_name' --type csv --headerline --file filepath/file_name.csv

mongoimport -d test -c test -Type CSV - ファイルSampleCsvfile_119kb.csv - Headerline

収集データを確認してください: -

var collections = db.getCollectionNames();

for(var i = 0; i< collections.length; i++)
{    
   print('Collection: ' + collections[i]);
   // print the name of each collection
   
   db.getCollection(collections[i]).find().forEach(printjson);
   
   //and then print the json of each of its elements
}

1]We can save xsl as .csv file
2] Got to MongoDB bin pathon cmd - > cd D:\Arkay\soft\MongoDB\bin
3] Run below command
> mongoimport.exe -d dbname -c collectionname --type csv --file "D:\Arkay\test.csv" --headerline
4] Verify on Mongo side using below coomand.
>db.collectioname.find().pretty().limit(1)

不思議なことに誰も言及していません --uri 国旗:

mongoimport --uri connectionString -c questions --type csv --file questions.csv --headerline 

将来の読者のための共有:

私たちの場合、追加する必要があります host それを機能させるためのパラメーター

mongoimport -h mongodb://someMongoDBhostUrl:somePORTrunningMongoDB/someDB -d someDB -c someCollection -u someUserName -p somePassword --file someCSVFile.csv --type csv --headerline --host=127.0.0.1

私の要件は、インポートすることでした .csv (with no headline) リモートへ MongoDB 実例。にとって mongoimport v3.0.7以下のコマンドは私のために働きました:

mongoimport -h <host>:<port> -u <db-user> -p <db-password>  -d <database-name> -c <collection-name> --file <csv file location> --fields <name of the columns(comma seperated) in csv> --type csv

例えば:

mongoimport -h 1234.mlab.com:61486 -u arpitaggarwal -p password  -d my-database -c employees --file employees.csv --fields name,email --type csv

以下は、インポート後のどのように見えるかのスクリーンショットです。

enter image description here

どこ nameemail の列です .csv ファイル。

与えられた .csv 列が1つしかないファイル ヘッダーなし, 、以下のコマンドが私のために働きました:

mongoimport -h <mongodb-host>:<mongodb-port> -u <username> -p <password> -d <mongodb-database-name> -c <collection-name> --file file.csv --fields <field-name> --type csv

どこ フィールド名はヘッダー名を指します の列の .csv ファイル。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top