2017-11-13 4 views
1

クライアントのデータをインポートしていますが、文字列リテラル"Infinity"はCSVファイルに表示されたときにはDouble実際の文字列よりもmongoimport - CSV "Infinity"文字列リテラルをDouble値ではなく文字列として扱います

値が引用符で囲まれていない場合は意味がありますが、この文脈では文字列として扱う必要があります。

次(簡易)CSV入力ファイルください:次のようにインポートされた場合には

ID,Name 
1,"Infinity" 

MongoDB shell version v3.4.10 
connecting to: mongodb://127.0.0.1:27017 
MongoDB server version: 3.4.10 
> use infinity-test 
switched to db infinity-test 
> db.getCollection('test-data').find() 
{ "_id" : ObjectId("5a09c48ba7025b2e68885f91"), "ID" : 1, "Name" : Infinity } 
> 

問題:

mongoimport.exe -v --host localhost:27017 --username admin --password password --authenticationDatabase admin -d "infinity-test" -c "test-data" --file C:\test-data.csv --type csv --headerline

それは、以下の結果が得られますフィールドを提供するMongoBoosterで見つけるのが簡単ですタイプ:

enter image description here

は、文字列リテラル"Infinity"を治療するためのmongoimportを強制する方法はありますか?

+1

を使用して

ID.string(),Name.string() 1,"Infinity" 

とインポート最新のリリースでは、インポートの列の種類を既定値を超えて指定できます。 FYI古いMongoDBを使用したとしても、最新の "tools"パッケージ(mongoimport、mongodumpなど)のインストールを止めることはありません。これらはすべてのバージョンで動作します。 –

答えて

1

MongoDB 3.4のNeilのコメントで詳しく説明すると、mongoimportは、フィールドのデータ型を指定する--columnsHaveTypesパラメータを受け付けます。デフォルトでは、コンテンツに基づいて型を推測します。

可能なタイプの完全なドキュメントは、例えばhttps://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption-columnshavetypes

である、あなたは両方のフィールドではなく、数字の文字列であることを指定するには、CSVのHEADERFILEを変更することができます。mongoimport --type=csv --columnsHaveTypes ...

+0

それは完璧です、ありがとう! – mwrichardson

関連する問題