18

我可以用来mongoimport将 csv 数据导入非流星 mongodb 数据库,但我不知道如何将 csv 导入我的流星应用程序数据库。

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

mongodb 文档mongoimport

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

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

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

我读了这个stackoverflow帖子评论:

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

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

4

5 回答 5

23

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

也不要忘记将端口放入(通常3001如果你在3000运行你的流星实例),当你运行它时,数据库通常是流星而不是用户

mongoimport -h localhost:3001 --db meteor --collection contacts --type csv --file /opt/backups/contacts.csv
于 2013-03-12T15:52:08.963 回答
8

注意:上述方法对我来说不适用于端口 3002,但它确实适用于端口 3001。

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

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

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

$  meteor mongo
...
...
meteor:PRIMARY> show collections
datarefs
system.indexes
meteor:PRIMARY>
于 2014-03-02T17:34:12.280 回答
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 不知何故,流星无法识别您需要的新导入集合,要么将它们全部删除,然后添加一些虚拟值然后再次导入,要么创建新的并用虚拟值初始化它然后导入。可能存在绑定错误,因为集合显示在 minimongo 中。

感谢 Akshat 和 Tom Kyler

于 2014-04-15T16:17:06.900 回答
0

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

    #!/bin/sh

    # 将 csvfile 导入部署到免费流星.com 托管的流星应用程序的脚本。
    # 确保您的 mongo 版本与 metor.com 的 mongo 版本匹配。
    # 作为 2016 年 1 月,它似乎是 3.x 的东西。使用 mongoimport 3.12 测试。

    如果 [ $# -eq 0 ]
      然后
        echo "用法:$0 xxx.meteor.com 集合文件名.csv"
        1号出口
    菲

    网址=$1
    收藏=$2
    文件=$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 $FILE

于 2016-01-29T19:02:40.483 回答
0

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

于 2016-12-01T09:10:17.007 回答