如何使用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 。
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
我没有使用--headerline,我正在使用--fields only ..仍然不起作用 –
我在说你必须使用--headerline,否则它会将第一行视为不同的文档,而不是作为字段标题。 –
如果我使用--headerline,它将存储Mongo DB中的所有字段,我不希望所有字段都被存储。我需要一些特定的领域。如果可能,请分享一下命令吗? –