如何使用mongoimport从tsv文件中的特定文件?

问题描述:

我有一个.tsv文件如下,如何使用mongoimport从tsv文件中的特定文件?

Name City Mobile Country 
A  Hyd 877777 IN 
B  Ban 78899 IN 

现在,我不希望被存储的所有领域。我需要一些特定的领域。我只需要使用mongoimport将名称,城市和移动字段导入到Mongo DB。 我用下面的命令,但它不工作

mongoimport --db test --collection persons --type tsv --file persons.tsv --fields Name,City,Mobile 

最后文件存储在蒙戈DB如下:

{ 
    "_id" : ObjectId("55accf948c59222984066646"), 
    "Name" : "A", 
    "Ciry" : "Hyd", 
    "Mobile" : "87777" 
} 

能否请你帮我解决这个问题?

这是不可能的,因为使用mongoimport您只能导入包含数据库中数据的整个文件,而不是文件的特定内容。

要导入TSV文件到数据库中给出的上面可以使用:

mongoimport --db test --collection persons --type tsv --file persons.tsv --headerline 

--headerline

如果使用--type CSV或--type tsv,使用第一行作为字段名称。 否则,mongoimport会将第一行导入为不同的文档。

如果您在导入JSON数据时尝试包含--headerline, mongoimport将返回错误。 - 首行仅用于导入csv或tsv 。 mongoimport --db test --collection persons --type tsv --file persons.tsv --fields Name,City,Mobile,Country

如果您的TSV文件仅包含要导入的数据而不是字段名称作为标题,您可以在mongoimport

例如使用fields财产

--fields <field1[,field2]>, -f <field1[,field2]>

导入csv或 tsv文件时,在第一个文件中没有字段名称时指定逗号分隔的字段名称列表(即,头文件)行 的文件。

如果您在导入JSON数据时尝试包括--fields, mongoimport将返回错误。 - 字段仅用于导入csv或tsv 。

+0

我没有使用--headerline,我正在使用--fields only ..仍然不起作用 –

+0

我在说你必须使用--headerline,否则它会将第一行视为不同的文档,而不是作为字段标题。 –

+0

如果我使用--headerline,它将存储Mongo DB中的所有字段,我不希望所有字段都被存储。我需要一些特定的领域。如果可能,请分享一下命令吗? –

mongoimport实用程序没有任何功能可以对您的输入进行这种操作,就像您自己想要的一样。这是“通过设计”,因为还有其他工具可以为您处理。

值得注意的是,在Unix变体和Windows命令提示符shell中都支持“pipe”|运算符。因此,mongoimport本身可以从“标准输入”中读取,而不是从进行过滤的另一个进程的“管道”输入中给出--file

一个简单的“perl”的例子(但遵循相同的在所选择的脚本):

perl -pe 'chomp($_); @p = split(/\t/,$_); pop(@p); $_ = join("\t",@p) . "\n";' < persons.tsv 

这将“条”从源persons.tsv最后一个字段,以便输出为:

Name City Mobile 
A  Hyd  877777 
B  Ban  78899 

然后仅仅是为了“结合”的表述与“管” |到“输入”进入mongoimport

perl -pe 'chomp($_); @p = split(/\t/,$_); pop(@p); $_ = join("\t",@p) . "\n";' < persons.tsv | \ 
mongoimport --db test --collection persons --type tsv --headerline --ignoreBlanks 

其中hapily创建数据:

2015-07-21T09:53:40.726+1000 connected to: localhost 
2015-07-21T09:53:40.741+1000 imported 2 documents 
$ mongo 
MongoDB shell version: 3.0.3 
connecting to: test 
> db.persons.find() 
{ "_id" : ObjectId("55ad8a04ee3124750e1600e7"), "Name" : "A", "City" : "Hyd", "Mobile" : 877777 } 
{ "_id" : ObjectId("55ad8a04ee3124750e1600e8"), "Name" : "B", "City" : "Ban", "Mobile" : 78899 } 

Mongoimport完整的例子:

mongoimport --port 7812 -u “turkeyUserAdmin” -p “土耳其@ DB^& *” --authenticationDatabase “admin”--db“USA”--collection B2B --type tsv --fields Database_Individual_ID.string(),Name.string(),Company.string() --columnsHaveTypes --file F:/ JAYBk/Project/B2B/Data/USA_B2B_DATA.tsv