1

会計ソフトウェアからエクスポートする .csv ファイルがあります。最終的な目標は、レコードを追加して、そのデータの "一部" を Access 2010 データベース テーブルにインポートすることです。私の問題は、.csv ファイルから選択フィールドのみを選択し、それらのフィールドをフォーマットする (データ型を定義する) 何らかの装置が必要であるため、「新しい」フォーマットの .csv を Access にインポートし、既存のフィールドに追加できるようにすることです。テーブル、エラーなし。

当社の会計ソフトウェアでは、データファイルから特定のフィールドをエクスポートできますが、これは面倒なプロセスであり、カスタマー サービス部門でエラーが発生する可能性が高くなります。私はこれを可能な限り「馬鹿げた」ものにする必要があります!

4

1 に答える 1

1

クエリを使用して、CSV データを Access テーブルに直接インポートします。

クエリを使用すると、使用可能な CSV フィールドのサブセットを簡単に選択できます。また、クエリには、アクセス先フィールドのデータ型との互換性のために CSV 値を変換する関数を含めることができます。

INSERT INTO tblFromCSV ( FK_ID, CD, [TIMESTAMP], ts_as_datetime )
SELECT
    CLng(csv.FK_ID),
    UCase(csv.CD),
    csv.TIMESTAMP,
    CDate(csv.ts_as_datetime)
FROM [Text;HDR=yes;Database=C:\share\Access\].[sample.csv] AS csv;

SQL の最初の行にリストされているフィールド名 はINSERT INTO tblFromCSV (<here>)、インポートされたデータを格納する Access テーブルのフィールドの名前です。すべてのテーブル フィールドに値を指定し、それらの値をテーブル フィールドと同じ順序で指定する場合は、そのフィールド リストを省略できます。私は通常、関係なくフィールドをリストします。

このFROM句でHDR=yesは、CSV ソース ファイルの最初の行にフィールド名が含まれていることを示しています。CSV ファイルがそうでない場合は、を使用しますHDR=no。Access は、fld1、fld2 などの偽の名前を CSV フィールドに割り当てます。

CSV にフィールド名が含まれている場合、Access フィールドの名前と一致する必要はありません。

クエリ デザイナーで同様のクエリを作成する場合は、次のFROMように句が変更される可能性があることに注意してください。

FROM (Text;HDR=yes;Database=C:\share\Access\) sample.csv AS csv;

その場合は、元に戻して構文エラーを回避してください。

句を機能させるには、SELECTクエリだけから始めることをお勧めします。FROM次に、必要に応じて CSV 値を変換するために必要な関数を追加します。そのSELECTクエリが必要なものを返したら、それをクエリに変換しINSERTます。

私の希望は、同様のクエリがあなたの状況で機能する場合、CSV データを Access に取得するための仲介者として Excel を必要としないことです。

于 2013-03-21T00:06:17.833 に答える