3

Oracle にインポートできるように、Access にいくつかのテーブルを csv にエクスポートしようとしています。これらのテーブルのいくつかに 70K - 500K のレコードがあり、約 25 のテーブルがあるとその機能が長くかかるため、ODBC 経由のエクスポートは使用しません。 sqlldr 経由でロードします。

一部の数値列は小数点以下 16 桁に達する可能性があり、それらすべてが必要です。ただし、エクスポートすると、2 しか表示されません。これについていくつかのグーグル検索を行いました。地域設定では小数点以下 9 桁までしか出力できません (Win XP)。クエリを使用して列をフォーマットすると、Oracle にインポートするときに不要なテキストに変更されます (コントロール ファイルで to_number() を使用できるのではないでしょうか?)。

なぜこれが難しいのですか?Access で数値列をそのままエクスポートできないのはなぜですか?

4

2 に答える 2

1

私の Access 2007 のテスト ケースでは、説明したのとまったく同じ結果が得られません。CSV にエクスポートすると、すべての小数点以下の桁数が取得されます。

decimal_fieldこれは、 10進数(18、16)のサンプルテーブルです。

id some_text decimal_field
-- --------- ------------------
 1 a         1.0123456789012345
 2 b                          2

残念ながら、これらのエクスポートさdecimal_fieldれた値は CSV で引用されています。

"id","some_text","decimal_field"
1,"a","1.0123456789012345"
2,"b","2" 

値を囲む引用符を削除する唯一の方法は、decimal_field本物のテキスト値を囲む引用符も削除することでした。

引用符で囲まれた数値が機能しない場合は、VBA カスタム CSV エクスポート プロシージャを作成して、必要に応じてフォーマットされた各ファイル行に値を書き込むことができます。

なぜこれが難しいのか」については、10 進データ型が原因であると思われます。他の数値データ型でこの種の問題に遭遇したことは覚えていません。残念ながら、それは私の憶測にすぎず、たとえそれが正しいとしても役に立ちません。

于 2012-07-10T18:26:16.753 に答える
0
  1. テーブルからすべてのレコードを選択するクエリを作成します。format 関数を使用して、問題のある列をフォーマットします。このクエリを保存し、テーブルの代わりに クエリ
    Select Format(Fieldname,"0000.00000") AS FormattedField
    をエクスポートします。

    このアプローチの欠点の 1 つは、数値フィールドがテキストとして扱われるため、エクスポートされた数値が引用符で囲まれることです。テキストを引用符で囲まないオプションを使用すると、同じクエリでエクスポートする実際のテキスト フィールドがすべて使用されます。引用符も失う

  2. もう 1 つの (より迅速で、より汚れた、おだやかな仕事) 方法は、最初に Excel にエクスポートし、そこからテキストにエクスポートすることです。これにより小数点以下はそのまま残りますが、明らかにあまりエレガントではありません。

于 2012-07-10T17:35:15.320 に答える