• ベストアンサー

データ移行

旧データベース(A)から新データベース(B)に データを移します。 AとBはテーブル、フィールドはまったく同じです。 ちなみにAccessで作っています。 AからBにデータを移す場合の 簡単なコーディングってありますか? AからSELECTして、なにかワークに 入れておいて、また、ワークから BにINSERTする方法しか思い浮かばないので お願いします

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

  • ベストアンサー
  • Yackn
  • ベストアンサー率42% (12/28)
回答No.2

前の方と一緒なのですが、サンプルを・・・(^^; リンクテーブルを張ったほうがいいのだけれども・・・ Ex1 外部テーブルの参照をする場合 Insert Into [Table名] From [Table名] In [Aのフルパス]  Aのフルパスにはほんとにフルパスをいれちゃってください。SQLリファレンスの[IN句]に載っています。 Ex2 Insert into [Table名] From [リンクテーブル名] リンクテーブルを張った例です。このほうが速いと思います。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 Bに何もデータがないのなら、Bのテーブルは削除して、Aのテーブルをインポートするのではダメですか。 もしリレーションとか張ってあってテーブルを削除したくないなら、Bのテーブルを削除せずにAのテーブルをインポートして(○○1という名前になる)、追加クエリを作って実行すればいいと思います。 ちなみにBのテーブルにすでにデータが入っている場合は、追加クエリだとユニークなフィールドが重複したデータは追加しません。 コードで書く場合、INSERT INTO文を使い、データベースが異なる場合は、IN句をつけます。 では。

関連するQ&A

  • SQLServerのデータベース間でデータコピー

    こんにちは。SQLServer2000(SP3a)、VB6.0(SP5)でデータベースの勉強をしています。用語に詳しくないので、うまく説明できないと思いますが、相談にのってください。 SQLServerに、「データベースA」と「データベースB」があり、VBのコマンドボタンをクリックすると、データベースAのテーブル1のデータをそのままデータベースBのテーブル1に移動させたいと思っています。 私の知識では、データベースAのテーブル1のデータをSelectですべて読み込み、変数などに入れておき、データベースBのテーブル1にInsertするという効率の悪い方法しか思い浮かばず、レコード数が多いので、時間がかかり困っています。 他に良い方法があればアドバイスをお願いします。 よろしくお願いします。

  • 副問合せをいれたINSERT文で、問合せ結果が無い場合

    副問合せをいれたINSERT文で、問合せ結果が無い場合 環境はSQL Server2005です。 テーブルA,テーブルBが存在し、テーブルAにレコード追加する際に一部をテーブルBから抽出して、 INSERTしようとしています。 [SQL文]  INSERT INTO テーブルA(フィールド1, フィールド2, フィールド3,フィールド4・・・)   SELECT 'AAA', 'BBB' ,B.フィールド3, B.フィールド4 ・・・   FROM テーブルB B WHERE ~ この場合、テーブルBにWHEREで指定した条件のレコードが存在しない場合はINSERTされなくなってしまいます。 存在しない場合は、該当のフィールドにはNULLをいれたいのですが、テーブルBからの結果が存在しない場合でも テーブルAにINSERTする方法はありますか?

  • データ移行

    システムの再構築でmdb(Access2000)からSQLServer2005とSQLServer2000からSQLServer2005へのデータ移行があります。 データ移行と言いましても、テーブルの構成が変わるため必要な項目と不必要な項目があります。今、考えているのが、一度SQLServer2005へmdbまたは、SQLServer2000と同じテーブルを作成(一時的なテーブル)し、その後、INSERT文で新規テーブルに必要な項目を追加していきたいと思っています。 一時的なワークテーブルを作成する際にmdbからとSQLServer2000からとでい色々な方法があると思うのですが、どの様な方法があり、その方法のメリット・デメリットを知りたいのですが、教えて頂けないでしょうか?よろしくお願いします。

  • updateではinsertできない?

    フィールド名だけ決まったテーブルがあります。中は空っぽです。これに対してインサートすればデータが追加さえるのはわかります。 しかしアップデートをかけると、インサートと同じ結果を返すことができるでしょうか? 例えばテーブルABCがあります。列1はA、列2はBとあります。update ABC set A='1',B='2'とやればテーブルABCにデータが インサートされることになるでしょうか?手元にデータベースがあればよいのですが、ありませんので、このような質問お許しください。

  • データベースの設計について

    朝からデータベースの設計について悩んでいます。 テーブルにしたいデータがあるのですが、 それぞれカテゴリーが違うデータがあります。 構造的には少ししか違わないのですが、 これらのデータを1つのテーブルとしてまとめるか、 それとも、それぞれ1つずつのテーブルにするか迷っています。 迷っている理由として: ・同時にアクセスがあった場合、全て一つのテーブルにまとめていると、障害がないか? ・全てを1つのテーブルにすると、多少は構造が違うので、必要のないフィールドが出てしまう。 それぞれを1つのテーブルで分割するということも考えたのですが、 例えば、全てのデータからある特定のデータの検索をかける場合に 不都合なのではないか?と考えてしまいます。 こういう場合には: select * from table_A where field="検索したいデータ"; select * from table_B where field="検索したいデータ"; select * from table_C where field="検索したいデータ"; とテーブルの分だけSQLを実行するしかないのでしょうか? どちらを選択しても、それぞれ一長一短のようで、混乱しています。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • ACCESS アクセスで他のデータベースからのデータインポート

    アクセスど初心者です。 Aというデータベースファイルにあるテーブルaのデータを、Bというデータベスファイルにあるテーブルbに インポートできますか?フィールド等詳細は両テーブルとも一緒だとします。 イメージ的には、テーブルbの最終レコードの後にテーブルaのデータがくっつくという感じです。 コピー&ペーストだとエラーになってしまうのですが・・・。宜しくお願いします。

  • アクセスでデータを足すには、また、引くには?

    アクセスを使用していて、テーブルAにあるデータに、テーブルBにあるデータを足したいと思っています。 それぞれデータは”名前”のようなフィールドで、ひとつにまとめたいのですがクエリーでの表現が分かりません。SQLビューのようなやり方でも構いませんので、是非お願い致します。 また、もう一つですが、テーブルAにあるデータに、テーブルBにあるデータを引きたい思っています。こちらも”名前”のようなフィールドで、同じレコードは省きたいと思っております。 よろしくお願い致します。

  • Access にて DISTINCROW を使用した INSERT SELECT

    お世話様です。 Access2003 VBAにて、DoCmd.RunSQLを使用してSQL文を流す際、 普通のINSERT-SELECT文はOKですが、 そのSELECT文にDISTINCROW句を使用していると、 数百件程度のSELECT結果しかINSERTできません。 本当は数千件のSELECT結果をINSERTしたいのですが、 これを実行した場合、エラーにもならず、1レコードもINSERTされません。 ためしに、DINSTINCTROWではなく、SQL文を変更してDISTINCTにしてみたところ、 2000件以上でもINSERTできました。 DISTINCROW句を使用して数千件でもINSERTできる方法はあるでしょうか? ちなみにSELECT単体ですと、DISTINCTROWを使用していながら、 数千件でも結果を表示できます。 SQL例: str_SQL = " INSERT INTO 結果テーブル(フィールド1, フィールド2, フィールド3)  SELECT DISTINCTROW A.項目1, A.項目2, B.項目1  FROM テーブル1 A, テーブル2 B  (WHERE句はあってもなくても現象変わらず)  ORDER BY A.項目4 ASC, A.項目5 ASC " DoCmd.RunSQL (str_SQL) よろしくお願いいたします。

  • Access97からAccess2003に移行したときの問題点

    VB4→VB6へ、SQLサーバ7→2000へ、Access97→2003へ移行を行っています。 旧システムでは、約5秒で完了する処理が、移行後は、2分51秒かかります。 どのような処理かというと、  1.SQLサーバのデータをSELECT  2.AccessのテーブルにINSERT(もしくは、UPDATE)  3.Accessのクエリ実行  4.Accessのレポート表示 です。 新旧比較してみたのですが、1.SQLサーバのデータのSelectは、差はありません。 2.AccessのテーブルにInsertでは、  Access97は、1秒、2003は、45秒です。 Updateとなると、Access97では、4秒、2003は、2分5秒となりました。 新システムの方が、遅くて性能が悪いようです。 どのように、チューニングしたらよいでしょうか? また、原因等、ご存知でしたら、教えていただけないでしょうか? よろしくお願いします。

  • 特定のデータ同士の集計はできますか?

    どうしても自分で解決できません。 どなたか教えてください!! windows-xp,アクセス2003を使っています。 テーブルAには、フィールド名「実績ID」「A賞」「B賞」「C賞」「効果金額」という表になっており、データが1万件近くあります。データ型は数値型です。 もうひとつのテーブルBにも、同じくフィールド名「実績ID」「A賞」「B賞」「C賞」「効果金額」というものがあり、データ型は数値型です。 そこで質問です。 テーブルBのデータをテーブルAに加算したいのですが、何かよい方法はないでしょうか? テーブル同士の加算は基本的にはむりだとしたら、テーブルBの方をクエリにして加算する。という方法はいかがでしょうか? ちなみに、テーブルBのデータは、テーブルAにデータを加算したら、データを削除するようにしていきたいと思っています。 すみませんが、宜しくお願い致します。