mongodb - 使用 --columnsHaveTypes 将数据从 csv 文件导入 Mongodb,指定特定字段为日期

标签 mongodb mongoimport

我正在尝试使用 mongoimport 实用程序导入一个 CSV 文件,其中一个特定列的类型为 日期-时间

从 MongoDB 3.4 版开始,我们可以使用 --columnsHaveTypes 来指示 mongoimport--headerline 中指定的字段列表是特定的类型。

我的 CSV 文件如下所示

TIME,TPS
2006-01-02 07:25:24,1
2006-01-02 07:25:25,2
2006-01-02 07:25:26,2
2006-01-02 07:25:27,2
2006-01-02 07:25:28,2
2006-01-02 07:25:29,2
2006-01-02 07:25:30,1
2006-01-02 07:25:31,3

我已执行但出错的命令

 >>mongoimport --db test1 --collection tpsformat --type csv --file C:\ARMS\TestTPS.csv --headerline TIME.date\(2006-01-02 15:04:05\),TPS.string\(\) --columnsHaveTypes --maintainInsertionOrder

2017-08-22T16:36:52.114+0530    error validating settings: only one positional argument is allowed
2017-08-22T16:36:52.119+0530    try 'mongoimport --help' for more information

>>mongoimport --db test1 --collection tpsformat --type csv --file C:\ARMS\TestTPS.csv --headerline TIME.string\(\),TPS.string\(\) --columnsHaveTypes --maintainInsertionOrder

2017-08-22T16:36:59.539+0530    error validating settings: incompatible options: --file and positional argument(s)
2017-08-22T16:36:59.543+0530    try 'mongoimport --help' for more information

但是,不带 --columnsHaveTypes 的简单导入可以正常执行

>>mongoimport --db test1 --collection tpsformat --type csv --file C:\ARMS\TestTPS.csv --headerline --maintainInsertionOrder

2017-08-22T16:37:07.928+0530    connected to: localhost
2017-08-22T16:37:07.936+0530    imported 8 documents

有人可以建议我在这里做错了什么吗?

谢谢

最佳答案

我知道这是一篇旧帖子,但我想我会提供一个答案,以防其他人正在寻求有关此问题的帮助。我也遇到过问题,直到我阅读了 Go 文档并从字面上理解了所有内容。

首先,当使用 --headerline--columnsHaveTypes 参数时,标题和列定义应位于 CSV 文件中。未在命令行上定义。

其次,在定义日期格式时,您必须严格使用 Go 文档中用于描述格式的值。

Go Time Format

例如。 2006 年 1 月 2 日星期一 15:04:05 MST

字面上的意思是,您必须使用 Mon(特定情况)来表明您希望以日期格式发送一周中的三个字母的某一天。如果您在格式规范中使用“Tue”,它将不起作用。您可以在 Go 文档中的 nextStdChunk 代码中亲自查看这一点。

最后,在为 Mongo 定义日期字段时,您不需要在格式周围使用引号。事实上,当我使用引号时,它从来没有起作用。

将所有这些放在一起供OP使用...

CSV 文件中的标题行应如下所示:

TIME.date(2006-01-02 15:04:05),TPS.string()
2006-01-02 07:25:24,1
2006-01-02 07:25:25,2
2006-01-02 07:25:26,2
2006-01-02 07:25:27,2
2006-01-02 07:25:28,2
2006-01-02 07:25:29,2
2006-01-02 07:25:30,1
2006-01-02 07:25:31,3

注意:在上面给出的日期格式中,我使用 15 来表示零填充的 24 小时时间值,因为我只能猜测您提供的是 24 小时时间。

mongoimport 命令行如下所示:

mongoimport --db test1 --collection tpsformat --type csv --file C:\ARMS\TestTPS.csv --headerline --columnsHaveTypes --maintainInsertionOrder

关于mongodb - 使用 --columnsHaveTypes 将数据从 csv 文件导入 Mongodb,指定特定字段为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45816325/

相关文章:

arrays - Mongo 过滤/查找嵌入数组中匹配条件的所有元素并返回周围文档?

c# - 将 DBSet 集合作为 bson 文档插入到 Mongodb

mongodb - 使用 mongoimport 将 csv 数据作为数组导入 mongodb

json - 如何将json文件内容作为文档导入到mongodb?

mongodb - Golang Mongodb Bson字符串 slice 数组解码错误

mongodb - 无法使用命令写入模式错误,降级到兼容模式

python - 在 MongoDB 中重用 Cursor 对象

mongodb - 失败 : error processing document in mongoimport

mongodb - 副本集的 mongoimport 命令是否需要包括仲裁者在内的所有副本集成员?

mongodb - mongoimport 版本 2.6.7 真的有 "--ssl"标志吗?