我有很多GB的数据存储在PostgreSQL数据库,我需要这些导入到MongoDB。我使用CSV导出和mongoimport完成了这一操作。
在CSV中有像'2011-06-25'这样的列,它被导入为字符串,而不是MongoDate,所以我不能有效地按日期搜索。
我发现了这个http://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-Example%3AImportingInterestingTypes但是这个例子说,我需要为文件使用JSON结构。我真的需要从PostgreSQL导出JSON文件吗?
如果我这样做-如何?
如果我没有,如何通过CSV导出“MongoDate”?
5条答案
按热度按时间1hdlvixo1#
事实上,第一个选项即使在大数据的情况下也相当快。下面是一个使用mongo控制台的示例查询:
bqjvbblv2#
您的选择:
lx0bsm1f3#
使用您最喜欢的语言编写一个脚本来导入数据。它将允许您控制数据类型并对数据应用结构更改。
通常,您会发现从表格数据转换到文档数据库时,数据的Map是不一样的。
如果您编写脚本,则可能还希望支持运行多个副本(或线程)以提高导入速度。
wnavrhmk4#
如果可能,从源CSV重新导入应该更快。对于一个相对较大的数据集(1.3亿个对象,源CSV约6 GB),
mongoimport
运行需要40分钟,但@ webDEVILpers建议的forEach
需要24小时以上(此时我取消了它)。要从CSV导入并转换日期,我运行
.date()
部分很棘手,您必须**在源格式中指定特定日期。所以我的时间戳就像“2018-02-03 12:09:23.00000+00”,这意味着以该格式(如上面的命令)格式化引用日期(Jan 2nd,2006 15:04:05)。请参阅此处以供参考。eanckbw95#
我迟到了一点,但是上面的
forEach
版本可以通过使用bulkWrite
而不是save
来提高速度,并且每个文档的写入时间为0.25ms而不是1.2ms。没有
bulkWrite
,即save
:bulkWrite
: