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

时间:2017-08-22 11:25:10

标签: 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

有人可以在这里建议我做错了吗。

由于

1 个答案:

答案 0 :(得分:1)

我知道这是一个老帖子,但我想我会提供一个答案,以防其他人在寻找这个问题的帮助。在我阅读Go文档之前,我也遇到了一些问题,并且非常非常地采取了一切措施。

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

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

Go Time Format

实施例。 1月2日星期一15:04:05 MST 2006

字面意思是您必须使用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