2017-02-01 6 views
0

SQL Serverからmongodbにデータをロードするためにetlを実行しています。私は10進型のフィールドをsqlに持っていますが、ロード処理を行うと、このフィールドのデータ型はmongodbのint32に変更されます。なぜこれが起こっているのか誰もが知っていますか?ありがとうございます。 私がコメントで指定された内容に基づいて答える小数フィールドがint32に変換され、etlをSQLからmongodbに変換中

+0

Mongoには10進データ型がありません。アダプタによっては、文字列、int、double/floatに変換される可能性があります。 – RizJa

+0

これはmongodbの値をintに変換しています。値をdouble/floatとして表示したい場合は、最初にdoubleをfloatに変換する必要がありますか? –

+0

はい、Mongoにデータをロードするとき、型は10進ではなくdouble/floatでなければなりません。どのように正確にMongoにデータをロードしていますか?スクリプトタスク?または第三者のコンポーネントですか? – RizJa

答えて

0

のMongoDBは、今日のようサポートdecimal型がありません。 intまたはfloat/doubleとする必要があります。

1.0などの数値を.0でMongoにプッシュすると、intとして記録されますが、1.1などの浮動小数点数はdoubleとして扱われます。

Mongoはタイプキャストなしで正確に集計を実行できるので、これは問題ではありません。 Mongoは、SQLの列レベルではなくドキュメントフィールドレベルで型を指定することを忘れないでください。あなたが強く型付けされたオブジェクトに対してそのフィールドをdouble型にマッピングしている場合、ほとんどのドライバが暗黙的に値をキャストすると信じています。

this postを参照してください。フィールドタイプをstringからdoubleに更新する必要がありました。同じ論理がintdouble変換にも適用されます。

関連する問題