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
コマンドを使用してインスタンスをターゲットにする方法がわかりません。
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
注:上記の方法は、私にとってはポート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>
まず、このような流星アプリでコレクションを作成します
_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に感謝します
ここで、 mongochef を使用してデータベース間でデータを移動します。非常に簡単です。各データベース(通常はローカルデータベースとリモートデータベース)に接続するだけで、コレクション間でドキュメントをコピーして貼り付けることができます。コマンドラインアプローチよりもはるかに簡単です。
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