Mongodbにcsvデータをロードし、各列に作成したいタイプを指定する方法を探していますか?
私はmongoimportを使用してきましたが、csvファイルの特定の列に使用されるデータ型を指定する方法がないように見えるので、それは非常に苦痛です。
データを読み込んで......
mongoimport --drop -d myDatabase -c myCollection --type csv --fields name --file myFile.csv
次に、mongoが実際に作成したタイプを確認するために分析を行います。
> db.artist.iTunes.feed.count()
36545
> db.artist.iTunes.feed.count( { 'name' : { $type : 2 } } )
36511
> db.artist.iTunes.feed.count( { 'name' : { $type : 1 } } )
1
> db.artist.iTunes.feed.count( { 'name' : { $type : 16 } } )
33
それから私はそのようなエラーを修正するために手術をします...
db.artist.iTunes.feed.find( { 'name' : { $type : 1 } } ).forEach( function (x) {
x.name = new String(x.name); // convert field to string
db.artist.iTunes.feed.save(x);
});
これは退屈です。
次のように、csvファイルの各列に作成するタイプをインポート時に指定できる方法があれば、すばらしいでしょう。
mongoimport --drop -d myDatabase -c myCollection --type csv --fields field1,field2 --types 2,2 --file myFile.csv
http://docs.mongodb.org/manual/reference/operator/query/type/
mongoimport
バージョン3.4以降を使用していることを確認し、--columnsHaveTypes
パラメータを使用して、各列のタイプをインポートに伝えます。
詳細は MongoDBリファレンスドキュメント を参照してください。
以下のタイプを指定できます。
auto()
binary(<arg>)
boolean()
date(<arg>)
date_go(<arg>)
date_ms(<arg>)
date_Oracle(<arg>)
decimal()
double()
int32()
int64()
string()
次のCSVデータを検討してください。
キャサリン・グレー、1996年2月3日、F、1235 TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLg == [.____。】アルバート・ギルバート、1992年4月24日、T、13、Q3VwY2FrZSBpcHN1bSBkb2xvciBzaXQgYW1ldCB0b290c2llIHJvbGwgYm9uYm9uIHRvZmZlZS4gQ2FuZHkgY2FuZXMgcGllIGNyb2lzc2FudCBjaG9jb2xhdGUgYmFyIGxvbGxpcG9wIGJlYXIgY2xhdyBtYWNhcm9vbi4gU3dlZXQgcm9sbCBjdXBjYWtlIGNoZWVzZWNha2Ugc291ZmZsw6kgYnJvd25pZSBpY2UgY3JlYW0uIEp1anViZXMgY2FrZSBjdXBjYWtlIG1hY2Fyb29uIGRhbmlzaCBqZWxseS1vIHNvdWZmbMOpLiBDYWtl IGFwcGxlIHBpZSBnaW5nZXJicmVhZCBjaG9jb2xhdGUgc3VnYXIgcGx1bS4gU3dlZXQgY2hvY29sYXRlIGNha2UgY2hvY29sYXRlIGNha2UganVqdWJlcyB0aXJhbWlzdSBvYXQgY2FrZS4gU3dlZXQgc291ZmZsw6kgY2hvY29sYXRlLiBMaXF1b3JpY2UgY290dG9uIGNhbmR5IGNob2NvbGF0ZSBtYXJzaG1hbGxvdy4gSmVsbHkgY29va2llIGNha2UgamVsbHkgYm
--fields
オプションは、MongoDBにデータをインポートするときに、どのフィールドタイプmongoimport
が使用するかを指定します(読みやすいようにラップされたコマンドライン):
mongoimport --db users --collectioncontacts --type csv --columnsHaveTypes --fields "name.string()、birthdate.date(2006-01-02)、contacted.boolean()、followerCount。 int32()、user thumbnail.binary(base64) " --file /example/file.csv