如何在我的流星应用数据库中使用mongoimport?

时间:2013-03-12 15:47:24

标签: mongodb meteor

我可以使用mongoimport将csv数据导入非meteor mongodb数据库,但我无法弄清楚如何将csv导入我的meteor应用数据库。

我学会了如何为我的meteor应用程序(meteor mongo)运行mongo shell,但我无法从shell运行mongoimport

mongoimport的mongodb文档说

  

在此示例中,mongoimport将/opt/backups/contacts.csv中的csv格式数据导入到编号为27017的localhost端口上运行的MongoDB实例上的users数据库中的集合联系人中。

     

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

但是当我运行mongod时,启动我的meteor应用程序并运行mongoimport它会导入我的test数据库,而不是我的应用数据库。

我读了这篇stackoverflow帖子评论:

  

使用mongoexport单独转储集合,然后mongoimport将文件导入meteor mongodb实例中名为meteor的db。 meteor mongo实例在端口3002上运行,bind_address为127.0.0.1,数据文件位于meteor project子目录.meteor / local / db

但我不明白如何连接到该实例或如何使用mongoimport命令对其进行定位。

5 个答案:

答案 0 :(得分:23)

看起来我刚才在Rahuls wonderful answer中回答了您的评论。无论如何,从mongodb.org为您的操作系统(或像macports这样的包管理器)下载mongodb,并使用bin文件夹中提供的工具。 mongoimport不是mongo shell中的命令,它是一个可单独运行的可执行文件。

另外不要忘记将端口放入(通常 3001 ,如果你在 3000 上运行meteor实例),db通常也是流星&运行时不是用户

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

答案 1 :(得分:8)

注意:上面的方法对我来说不适用于端口3002,但是DID适用于端口3001。

要将外部TSV文件导入流星数据库,我启动了需要TSV数据的流星应用程序。这也启动了meteor mongodb服务(在我的主机上:localhost:3001),然后我在OSX中打开了一个终端并通过终端导航到mongodb package bin文件夹,我之前为了获取二进制文件而下载了该文件夹, “mongoimport”。一旦进入mongodb包的bin文件夹,然后在命令提示符下面输入以下内容(某些开关选项会有所不同......但是--host, - localhost和--db开关/值应如下所示):

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

点击进入后,mongoimport回显成功导入终端。完成后,我可以通过终端导航到流星应用程序并启动meteor mongo:$ meteor mongo ....并在此应用程序的流星数据库中查看导入的集合“datarefs”。

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

答案 2 :(得分:4)

首先在像这样的流星应用程序中创建集合

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不能识别你需要的新导入的集合,要么删除所有它们添加一些虚拟值然后再次导入或创建新值并用虚拟值初始化然后导入。可能存在绑定错误,因为集合显示在minimongo中。

感谢Akshat和Tom Kyler

答案 3 :(得分:0)

用于运行mongoimport到xxx.meteor.com的小脚本(模板)


    #!/bin/sh

    # Script to import csvfile to meteor application deployed to free meteor.com hosting.
    # Make sure your versions of mongo match with the metor.com mongo versions. 
    # As Jan 2016 it seems to be 3.x something. Tested with mongoimport 3.12.

    if [ $# -eq 0 ]
      then
        echo "usage: $0 xxx.meteor.com collection filename.csv"
        exit 1
    fi

    URL=$1
    COLLECTION=$2
    FILE=$3

    echo Connecting to $URL, please stand by.... 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 $FILE

答案 4 :(得分:0)

现在我使用mongochef在数据库之间移动数据。它非常简单 - 您只需连接到每个数据库(通常是本地和远程数据库),然后您就可以跨集合复制和粘贴文档。比命令行方法容易得多。