現在アクセスを使って顧客管理を行なっております。


このたび、新しいシステムに移行することになりましたがシステム今あるACCESSをテーブル構造の違う新しいシステムに移行するに当たり、DBの構造が違う場合は、どのような処理を行なえば、データを移行をすることができるのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/09/13 15:36:38
  • 終了:--

回答(5件)

id:Hibi No.1

Hibi回答回数178ベストアンサー獲得回数22005/09/13 16:19:40

http://homepage2.nifty.com/MrUr/guide/mitv2sql.htm

SQL Serverへのアップサイジング

AccessからSQL Server(又はMSDE)へ移行するのであれば

「アップサイジング」で移行できると思います。

id:msdtakashi

すみません。ACCESSからACCESSへの移行です。

それから、SQLServerを使うほど大掛かりなものでは在りませんが、顧客情報だけで、2000件ほどあります。

2005/09/13 17:06:16
id:Im_Me No.2

Im_Me回答回数301ベストアンサー獲得回数62005/09/13 16:21:46

ポイント20pt

http://www.naboki.net/access/heaven/heaven_09.html

�����ȂƂ��A���g���΂����́H �֐��t�����W�I

URLはほとんどダミーです

まずACCESSのテーブル同士を比較し、変換元のTBLおよびフィールドと、変換先のTBLおよびフィールドを調べます。


その上で例えば


元TBL変換先TBL

KEY:5桁->KEY:7桁

であればKEYの桁数を変換し(そのまま、もしくはFORMAT,CINTなどなど)変換テーブル用を用意します。

その変換テーブルを元にして元TBL->先TBLへ展開を行っていきます


元「社員マスタ」

番号 住所     氏名

00001 東京都XX区 はてな太郎


変換テーブル

元番号 変換先番号

00001 0000001


変換先「社員氏名マスタ」へ追加クエリ(変換マスタでKEY変換をして「社員マスタ」より追加)

番号 氏名

0000001 はてな太郎


変換先「社員住所マスタ」(変換マスタでKEY変換をして「社員マスタ」より追加)

番号 住所     

0000001 東京都XX区


(対応しない項目もありえるので、KEY+初期値でテーブルを作っておいて、

対応する項目を後から更新する方が無難)

ざっくり書いてしまえばこんな具合です(^^;)

変換用に一旦テーブルをインポートしたMDBを他に用意して変換作業->正規のMDBへインポートするのが安全です。

id:msdtakashi

フィールドの名前に変換して、必要な項目を移す方法みたいですね。

2005/09/13 16:42:32
id:spyglass No.3

spyglass回答回数455ベストアンサー獲得回数292005/09/13 16:22:00

ポイント20pt

URLはダミーです。


msdtakashiさんのおっしゃられる「DBの構造が違う」と云うのは

単に新しいシステムはフィールド(カラム軸)が違うと云う事なのでしょうか?


もう少し具体的に「新しいシステムでは○○を行いたい」しかし「古いシステムにはそれが無い」など、

教えて頂ければ回答しやすいかと思います。

id:msdtakashi

すみません。

カラムがまったく違います。

例えば、元のTBLが「id」「名前」「名前カナ」「〒番号」「住所1」・・・

新しい、TBLが「id」「名前_カナ」「名前」「郵便番号」「都道府県」「住所1」「住所2」・・・

見たいな感じですね。

それから、現時点で必要ないのですが、例えば新しいDBにデータを入力してしまった場合の追加方法とかは、同じカラム構造ならテーブルに挿入する方法なんかはありますか?

2005/09/13 16:59:30
id:Hibi No.4

Hibi回答回数178ベストアンサー獲得回数22005/09/13 17:34:50

ポイント10pt

http://www.hatena.ne.jp/111

人力検索はてな

2回目の回答です。


AccessからAccessへの移行でテーブルのフィールド名(カラム名)が違うだけということでしょうか?データ型は同じ?

もし、そうであるなら元のmdbファイルを移行するmdbファイルにリンク(リンクテーブル)を設定し

リンクしたテーブルから移行したいテーブルへクエリ等でInsertすればよいかと思います。


他にも方法(インポート等)があるかもしれませんが1つの方法として紹介します。


外していたらごめんなさい。

id:msdtakashi

手入力方法でトライした結果何とかできました。

まだ、本編ではないので、かなり手間のかかる作業かと思われます。

データ型は多少違いエラーが出てしまったのでこれも、手動で直しました。

2005/09/13 18:06:54
id:Im_Me No.5

Im_Me回答回数301ベストアンサー獲得回数62005/09/13 17:37:11

ポイント30pt

http://www.accessclub.jp/

Microsoft Access Club

二度目の回答です。

spyglassさんもおっしゃってますが、もちっと具体的な補足(内容)があったがいい気が…(^^;)


先の回答で御幣があったような気がしないでもないので、#3のコメントの場合の追加クエリ書いておきます。>フィールドの名前に変換って??

(追加クエリなどはOKですか?)

旧:TBL1、新:TBL2

旧TBLのid=数値型、新TBLのid=文字列かつ頭0詰(1->001)

新TBLの都道府県は仮データとして「未入力」転送

旧TBLの住所1を10文字づつ新TBLの住所1、2へ


INSERT INTO TBL2 ( id, 名前, 名前_カナ, 郵便番号, 都道府県, 住所1, 住所2 )

SELECT

Format(CInt([TBL1]![id]),”000”) AS ID_1,

TBL1.名前,

TBL1.名前カナ,

TBL1.〒番号,

”未入力” AS 都道府県,

Left([TBL1]![住所1],10) AS 住所1_1,

Mid([TBL1]![住所1],11,10) AS 住所2_1

FROM TBL1;


>例えば新しいDBにデータを入力してしまった場合の追加方法とかは、同じカラム構造ならテーブルに挿入する方法なんかはありますか


同じカラム構造(フィールドが同じ)ならデータシートビューでそのままコピー&ペーストできますが…(またはエクスポート->インポート)

基本的に旧DBと新DBは並行稼動こそすれ、新->旧へのコンバートは避けたほうが無難では?

それをするくらいならいっそ

1:旧DB->新DBへ仮移行

2:並行稼動

1:旧DB->新DBへ本移行

した方がいいです。

もしもその過程が何回にも及ぶのであれば、変換データをTXTでエクスポートしつつ必要な物(差分)だけインポート、という手順を踏んだほうがいいかもしれません。

※ACCESSのエクスポート&インポートは基本的にCSVです。データ崩れに注意してください。


老婆心ながら、データの移行は基本的にシステム構造を熟知していて、尚且つ移行を行う者の責任において行います。

旧システムで一件のデータを追加しただけでも新DBではデータ構造が壊れる可能性もありますので、コンバートはファイルフローを充分テストした上で行ってください。

id:msdtakashi

ありがとうございました。

データのカラムの順番を変更した後、CVS形式でデータを新しいシステムの構造で移した方が何かと問題がなさそうですね。

後は、自分で調べながらやってみます。

やはり、ACCESSをもっとしっかりと勉強しないつらい部分があります・・・。

2005/09/13 18:10:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません