こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Accessのテーブルへのデータインポートについて

Accessのテーブルへのデータインポートについて

Access2002で、A.mdbのTESTテーブルからB.mdbのTESTテーブル(構造は同じ)へテーブルデータをインポートしたいのです。
TESTテーブルの主キーはSEQ(オートナンバー)しかありません。
そのときに、コピー元とコピー先の主キーに重複があった場合、オートナンバーなので自動で再付番しデータが追加して欲しかったのですが、
Accessの機能のエクスポート、インポートでは、コピー先に主キーに重複があったデータは上書きされてしまいます。

テーブルを開き、データをコピー&ペーストしますと、ペーストしたときにオートナンバーで自動で再付番されます。
この方法でもいいのですが、データが数百万件あるので、現実的ではありません。

Accessのインポート・エクスポートで、オートナンバーで主キーを再付番してから、B.mdbのTESTテーブルにデータ追加する方法はないでしょうか?
よろしくお願いいたします。

投稿日時 - 2010-03-29 14:38:46

QNo.5787598

すぐに回答ほしいです

質問者が選んだベストアンサー

テキストファイルを使ってエクスポート&インポートします。
(1)A.mdbで、TESTテーブルをテキスト形式でエクスポート
 「先頭行をフィールド名として使う」にチェック
(2)テキストエディタでSEQの列を削除
(3)B.mdbで、テキストファイルからインポート

もう少し簡単な方法
B.MDBでクエリを作成します。SQLは下記
INSERT INTO TEST SELECT A,B,C・・・ FROM TEST IN "C:\~\A.MDB"
※A,B,C・・・ SEQを除く全てのフィールド並びです。
上記クエリを実行します。

投稿日時 - 2010-03-29 16:19:58

お礼

ご返答、ありがとうございました。
今回、テキストエディタが使用できない環境でした。
そのため、nda23様のご意見を参考に、以下の方法で実現いたしました。

(1)A.mdbで、TESTテーブルをテキスト形式でエクスポート。
(2)B.mdbで、ファイル→インポートで、インポートを行う。
(3)インポートの設定で、B.mdbのTESTテーブルにインポートするように指定。
(4)「テキスト インポート ウィザード」で「これで、データをインポートするための設定が終了しました。」の画面で、「設定」ボタンを押下する。
(5)項目一覧から、SQL(主キー)の「スキップ」をチェックし、「OK」を押下する。
(6)「テキスト インポート ウィザード」で「完了」ボタンを押下し、インポートを開始。

この方法で、オートナンバーで自動付番され、インポート出来ました。

投稿日時 - 2010-03-30 14:18:12

ANo.2

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

b.mdbにリンクテーブルを作って、
オートナンバー以外のフィールドを追加クエリにて追加。
時間がかかるのが心配なら、オートナンバーで範囲を指定し、
件数を確認しながら追加。

投稿日時 - 2010-03-30 09:18:03

お礼

ご返答、ありがとうございました。
ご参考にし、試させていただきます。

投稿日時 - 2010-03-30 14:51:48

質問者の意図するところが良く判りません。
A.mdbのTESTテーブルが現在持っている主キーの値は変わってしまっても問題ないのでしょうか?
それならばA.mdbのTESTテーブルから主キーフィールドを削除してB.mdbのTESTテーブルにデータ追加すればよいのでは?

投稿日時 - 2010-03-29 16:08:19

お礼

ご返答、ありがとうございました。
今回は、ちょっと特殊な仕様なのでテーブルインポート時に主キーの値は変わってもかまいません。
そういう考えがありましたか。参考にさせていただきます。

投稿日時 - 2010-03-30 14:09:39

あなたにオススメの質問