2017-09-28 5 views
0

最近、SQLサーバーに変換するために非常に古いアクセスデータベースが渡されました。それは90年代に他の人によって行われましたが、私は.mdbファイルを持っています複数のアクセステーブルを1つのSQLサーバーテーブルにインポートする

データベースは非常に古いですが、顧客は実際の処方データを保持したいと思っています。次のように上記を参照することができるように、それは

Formula_000

Formula_001

Formula_002

ヘッダがある..別々のテーブルで構成されています名前、日付、バージョンなどの詳細を含む数式表

表[式]

​​

数式テーブル内の各エントリに行くために成分を保持する別個の添付表があるので、次の列で[Formula_001]と呼ばれる表が存在します内部..

表[Formula_000](×100)

material code | % | 

material 1234 | 025 |  

material 5678 | 075 | 

------------------------------------------------ 

Idは、これらのテーブルをすべてヘッダテーブルでリンクしたくないのですが、データを新しい構造にする必要があります。数百のこれらのテーブルは、Formula_xxx

私がしたいのは、上記のデータベースのヘッダーテーブル[数式](私はそれを簡単に削除することができます)を除いて、すべてのMSアクセステーブルをループし、コピーそれらを新しいマスター表に追加します。追加の列には、それがどの表から来たものかを識別する数式番号が付いています。以下の例..

表[Formula_Ingredients]

material code | % | formulaID | 

material 1234 | 025 | 000 

material 5678 | 075 | 000 

material 1111 | 025 | 001 

material 2222 | 075 | 001 

------------------------------------------------ 

任意のアイデアの男?

+1

上記のようにテーブルを作成すると、すべての 'Formula_xxx'テーブルを回転して新しいテーブルに行を追加するためのVBAコードを記述することができます。それはあなたのニーズに応えますか? –

+0

そういうわけではありませんが、ヘッダーテーブルをループして数式テーブル名を取得し、個別に開いて、手動で作成したテーブルにIDとしてテーブル名を含めてコピーすることもできます。ありがとう – iXDev

+0

VBAを使用してSQLを 'Insert Into'( 'Formula_xxx'からレコードを選択)に構築し、ターゲットが新しいテーブルである場合は、各テーブルを開く必要はありません。 –

答えて

1

これは、11,000のAccessデータベースをPostgresにインポートするために実行した最近のタスクを思い出させます。 1つのAccessファイルに複数のテーブルがありますが、複数のAccessファイルで同じテーブル名ではなく、同じアプローチが適用されます。

汎用SQLスクリプトプロセッサ(免責事項:私が書いたもの)を使用しました。これはPythonプログラムです。 https://pypi.org/project/execsql/から、またはpip install execsqlを実行して取得できます。この方法では、すべての数式テーブルの名前をターゲットデータベースのテーブルに入れてから、execsqlのCOPYメタコマンドを使用して繰り返し、AccessデータベースからSQL Serverにデータをコピーします。これはドキュメントの例13(http://execsql.readthedocs.io/en/latest/examples.html#example-13-import-all-the-csv-files-in-a-directory)に示されていますが、これをインポートの代わりにコピーするように変更したいとします。

+0

ありがとうございました – iXDev

関連する問題