我想使用mongoimport從CSV導入到mongodb 3.4中,我希望將空列導入爲字段的空值。使用mongoimport導入CSV文件可以導入NULL嗎?
我在mongoimport文檔的印象之下,如果--ignoreBlanks沒有被指定,我會得到我想要的行爲。
--ignoreBlanks
Ignores empty fields in csv and tsv exports. If not specified, mongoimport creates fields without values in imported documents.
然而,當我嘗試沒有--ignoreblanks加載這個樣本數據:
field_1.string(),field_2.int32(),field_3.string()
A,5,B
C,,D
E,7,F
然後我得到的是任何領域的錯誤不是一個字符串。
mongoimport --collection null_test --type csv --headerline --columnsHaveTypes --file null_test.csv --verbose
2017-08-08T16:55:42.989+0000 filesize: 67 bytes
2017-08-08T16:55:42.989+0000 using fields: field_1,field_2,field_3
2017-08-08T16:55:43.001+0000 connected to: localhost:27017
2017-08-08T16:55:43.001+0000 ns: DEV.null_test
2017-08-08T16:55:43.001+0000 connected to node type: standalone
2017-08-08T16:55:43.001+0000 using write concern: w='1', j=false, fsync=false, wtimeout=0
2017-08-08T16:55:43.001+0000 using write concern: w='1', j=false, fsync=false, wtimeout=0
2017-08-08T16:55:43.001+0000 Failed: type coercion failure in document #1 for column 'field_2', could not parse token '' to type int32
2017-08-08T16:55:43.001+0000 imported 0 documents
對於字符串字段,它加載一個空字符串而不是null。
我在這裏做錯了什麼?是否可以使用帶有CSV或TSV文件的mongoimport將字段加載爲NULL?
對於什麼是值得的,如果我使用mongoimport導入帶有NULL的json文件,它將導入它們就像實際的NULL一樣好。
[
{
"field1": "A",
"field2": null,
"field3": "C"
},
{
"field1": 1,
"field2": 5,
"field3": null
}
]
「的MongoDB絕不會爲您導入空值。」但是這是錯誤的。如果我使用mongoimport導入json而不是csv或tsv,它肯定會導入null。 – ScottMcG
很好,我稍微回答了我的答案。好吧? – dnickless
更好,但我希望它是我想聽到的答案:)。讓我猶豫的部分是--ignoreblanks的文檔說「如果不指定 ,mongoimport會在導入的 文檔中創建沒有值的字段。」也許這是我的RDB背景,但如果不是空值,什麼是「沒有價值的領域」?如果它本來不應該創造這個領域,爲什麼會使用這個措辭? – ScottMcG