web-dev-qa-db-ja.com

CSVファイルからインポートする場合、小数点以下2桁のFLOATデータ型が必要です

インポート/エクスポートウィザードを使用して、CSVファイルをSQL Serverにインポートしています。 CSVファイルのデータは次のようになります。

...0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,164051.00,...

これらの値はすべて金額です。これはパッケージ化された金融ソフトウェア(正確にはJD Edwards 9.2)であるため、すべての列のデータ型をFLOATにする必要があります。変更することはできません。

ウィザードを使用してインポートした後、テーブルの列にはそれぞれ0164051があります。

事前にパッケージ化されたJDEファイナンスレポートを実行すると、値として0および1640.51が含まれます。つまり、最後の2桁が「セント」として解釈され、それに対して私ができることは何もありません。値が0であれば問題はありませんが、それ以外のすべての問題です。

したがって、私の唯一のオプションは、インポート後に列の値に2つの後続ゼロを追加することです。これを行う方法はありますか?

ドルの金額がCSVファイルで16578.98の場合、正常にインポートされ、レポートに正しく表示されます。問題は、ドルの金額または5.806.10のような金額でのみ発生します。

何か案は?

1
H. Daiminger

データがこのJDEdwardsレポートにのみ使用されている場合は、単純にドル(164051、0、16578.98)からセント(100を掛ける)(16405100、0、1657898)に変換できます。

他の場所でデータが正しい形式で適切に使用されている場合は、ドルからセントに変換するビューを作成し、JDEレポートでそのビューを使用します。

小数セント($ 12358.9275)を受け取った場合は、端数部分を削除するために四捨五入する必要があります。しかし、私はそれが今問題になると信じています(あなたが言っていることから、それは$ 1235892.75として報告されます)。

1
RDFozz

「現状のまま」のデータをステージングテーブルにインポートし、データを最終的な宛先テーブルに検証/変換するために使用できるストアドプロシージャを用意することをお勧めします。そうすれば、「CAST/Convert/LEFT/RIGHT/etc。」のすべてを処理できます。機能します。

その特定の変換では、これはうまくいくはずです:

 CAST([YourColumnHere] AS DECIMAL(18,2))

例:

SELECT 
 CAST('18.40' AS FLOAT) FloatExample
,CAST(CAST('18.40' AS FLOAT) AS DECIMAL(18,2)) AS DecimalExample


FloatExample    DecimalExample
------------    --------------
18.4            18.40
0
MguerraTorres

インポートウィザードの詳細プロパティを使用してみましたか?列のデータ型とスケールを確認してください。暗黙的な変換を防ぐために、データ型を明示的に宣言できる必要があります。 2のスケールでは、小数点以下2桁が表示されます。

enter image description here

編集:私はあなたのデータタイプが浮動小数点であることを理解していますが、これが潜在的に問題を引き起こしているものです。データベースにデータを10進数として保存して、アプリケーションで10進数から浮動小数点への変換を実行してみます。

0
DimUser