web-dev-qa-db-ja.com

私の流星アプリケーションデータベースでmongoimportを使用する方法は?

mongoimportを使用してcsvデータをmeteor以外のmongodbデータベースにインポートすることはできますが、csvをmeteorアプリデータベースにインポートする方法がわかりません。

流星アプリでmongoShellを実行する方法を学びました(meteor mongo)しかし、シェルからmongoimportを実行することはできません。

mongoimportのmongodbドキュメントによると

この例では、mongoimportは/opt/backups/contacts.csv内のcsv形式のデータを、ローカルホストポート番号27017で実行されているMongoDBインスタンスのusersデータベース内のコレクション連絡先にインポートします。

mongoimport --db users --collectioncontacts --type csv --file /opt/backups/contacts.csv

しかし、mongodを実行し、meteorアプリを起動し、mongoimportを実行すると、アプリデータベースではなくtestデータベースにインポートされます。

私はこのstackoverflow投稿コメントを読みました:

Mongoexportを使用してコレクションを個別にダンプしてから、mongoimportを使用してファイルをmeteormongodbインスタンスのmeteorという名前のデータベースにインポートします。 meteor mongoインスタンスはbind_address127.0.0.1のポート3002で実行され、データファイルはmeteorプロジェクトのサブディレクトリ.meteor/local/dbにあります。

しかし、そのインスタンスに接続する方法や、mongoimportコマンドを使用してインスタンスをターゲットにする方法がわかりません。

17
Max Hodges

Rahuls素晴らしい答え であなたのコメントに答えたようです。とにかく、お使いのOS(またはmacportsのようなパッケージマネージャー)用にmongodb.orgからmongodbをダウンロードし、binフォルダーにあるツールを使用してください。 mongoimportはmongoShellのコマンドではなく、個別に実行される実行可能ファイルです。

また、ポートを(3000でmeteorインスタンスを実行している場合は通常3001)に配置することも忘れないでください。 dbは通常meteorであり、実行するとusersではありません

mongoimport -h localhost:3001 --db meteor --collection contacts --type csv --file /opt/backups/contacts.csv
23
Akshat

注:上記の方法は、私にとってはポート3002では機能しませんでしたが、DIDポート3001では機能します。

外部TSVファイルをmeteordbにインポートするために、TSVデータを必要とするmeteorアプリを起動しました。これにより、meteor mongodbサービス(私の場合はホスト:localhost:3001)も起動し、OSXでターミナルを開き、ターミナルを介して、バイナリを取得するために以前にダウンロードしたmongodbパッケージbinフォルダーに移動しました。 「mongoimport」。 mongodbパッケージのbinフォルダーに移動したら、コマンドプロンプトで次のように入力しました(一部のスイッチオプションは異なりますが、-Host、-localhost、-dbのスイッチ/値は次のようになります)。

$  ./mongoimport --Host localhost:3001 --db meteor --collection datarefs --type tsv --drop --headerline --file /PathToFile/DataRefs.tsv

Enterキーを押した後、mongoimportはターミナルでのインポートに成功しました。これが完了すると、ターミナルを介してmeteorアプリに移動し、meteor mongo:$ meteor mongo ....を起動して、このアプリのmeteordbにインポートされたコレクション "datarefs"を表示できます。

$  meteor mongo
...
...
meteor:PRIMARY> show collections
datarefs
system.indexes
meteor:PRIMARY>
8
Tom Kyler

まず、このような流星アプリでコレクションを作成します

_Students = new Meteor.Collection("students");
_

次に、ダミー値を追加して、流星がコレクションを初期化したことを確認します

Students.insert({"name":"first"});たとえばクリックイベント。確認するにはこれを使用してください

_meteor:PRIMARY> show collections students system.indexes_

次にインポートします。 _mongoimport -h localhost:3001 -d meteor -c students < students.json_どういうわけか、meteorは新しくインポートされたコレクションを認識しません。すべてを削除してダミー値を追加してから再度インポートするか、新しいコレクションを作成してダミー値で初期化してからインポートする必要があります。コレクションが表示されるため、バインディングのバグがある可能性があります。ミニモンゴで右に。

AkshatとTomKylerに感謝します

4
despi23

ここで、 mongochef を使用してデータベース間でデータを移動します。非常に簡単です。各データベース(通常はローカルデータベースとリモートデータベース)に接続するだけで、コレクション間でドキュメントをコピーして貼り付けることができます。コマンドラインアプローチよりもはるかに簡単です。

0
Max Hodges

Xxx.meteor.comへのmongoimportを実行するための小さなスクリプト(テンプレート)

 
#!/ bin/sh 
 
#無料のmeteor.comホスティングにデプロイされたmeteorアプリケーションにcsvfileをインポートするスクリプト。
#確認してくださいお使いのバージョンのmongoは、metor.comのmongoバージョンと一致します。 
#2016年1月の時点では、3.xのようです。 mongoimport3.12でテスト済み。
 
 if [$#-eq 0] 
 then 
 echo "usage:$ 0xxx.meteor.comコレクションfilename.csv" 
 exit 1 
 fi 
 
 URL = $ 1 
 COLLECTION = $ 2 
 FILE = $ 3 
 
 echo $ URLに接続しています、待機してください.... collection = $ COLLECTION file = $ FILE 
 
 PUPMS = `meteor mongo --url $ URL | sed's/mongodb:\/\ // -u/'| sed's /:/ -p/'| sed's/@/-h/'| sed's/\ // -d/'`



mongoimport-v $ PUPMS --type csv --headerline --collection $ COLLECTION- -ファイル$ FILE 
 
0
ljack