データ移行の方法とメリット・デメリット

このQ&Aのポイント
  • データ移行はマイクロソフトアクセス2000からSQL Server 2005、およびSQL Server 2000からSQL Server 2005への移行を指します。移行には一時的なテーブル作成とINSERT文を使用する方法があります。
  • マイクロソフトアクセス2000とSQL Server 2000からテーブルの構成が変わるため、必要な項目と不要な項目があります。一時的なテーブルを作成し、必要な項目を追加して、新しいテーブルにデータを移行します。
  • 一時的なテーブル作成にはマイクロソフトアクセス2000とSQL Server 2000からのデータを取り込む方法があります。また、INSERT文を使用してデータを追加することで、新しいテーブルに必要な項目を追加していきます。
回答を見る
  • ベストアンサー

データ移行

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

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

  • ベストアンサー
  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>データ移行と言いましても、テーブルの構成が変わるため必要な項目と不必要な項目があります。 データ移行は通常、こういうことが多いですよね。単に移行するだけでなく、ゴミデータの削除とか、新たにコード化する項目があったり、追加入力するデータが発生したりすると思います。いわゆる「データのクリーニング」ってやつですね。 たぶん、Accessだけでなく、エクセルデータも使うことになると思われますので、手軽さを考えると、さしあたってAccessでデータを整理したほうが楽だと思います。必要に応じて、データの整合性確認をSQLで行ったり、簡単なVBAでチェックしたりすると良いと思います。 それなりに整理できたところで、SQLServerに持って行けばいいでしょうね。 ただ、データ量がmdbで扱うにはちょっと多いとか、データ追加・修正を人海戦術で行いたい、なんて要望があるなら、ある程度整理ができたところでSQLServeに移行して、残りの作業を継続するのがよいかと思います。

関連するQ&A

  • テーブルデータ移行について

    困っています。。MDBテーブルデータ移行について 現在新しいデータベースに切り替えるために、既存のデータベースに存在するすべてのテーブルのデータを移行したいと考えています。理想としては作成したCD-ROMから新たにmdbファイルをインストールした際、自動的に既存のテーブルデータが移行されることを目標にしています。 環境はACCESS2003。VBAにて作成中。 <流れとしては> 既存のmdbファイルにテーブルデータが存在する状態。 ↓ 作成したCD-ROMから新たなmdbファイルをインストール。 ↓ 新たにインストールしたmdbファイルの空のテーブルに既存のmdbファイルのテーブルデータが移行されている。 いろいろ探しては見たのですが、見つけることができませんでした。 どなたかアドバイスをご教授いただけたらうれしいです。 または、なにかサンプルが載っているサイトがあれば教えていただきたいです。

  • SQLServerのデータをPostgreSQLに移行

    SQLServer上にあるデータをPostgreSQLに移行するのによい方法はありますか?データの移行のみでテーブル構造は既にPostgreSQL上で作成(SQLServerのテーブル構造とほぼ同じ)しているので移行しません。 現在CSVで入出力することを考えていますが、これよりもっと簡単にできる方法や、ソフトがあれば教えてください。

  • キーは移行されない????

    SQLServer2000からODBCでMDBを作成しました。 テーブルとデータは出来ているのですがMDBのテーブルにはキーが全くついていません。SQLServer2000のテーブルのキー情報はMDBには作られないのでしょうか?

  • MDBファイルのデータ移行

    ACCESSでDB環境を作成してmdbファイルで使っていました。 プログラム変更時にDBにもテーブルの項目をいくつか追加しました。 旧mdbファイルのデータを新mdbに移行したいのですが、ACCESSの無い状態で移行するのは可能でしょうか。 ACCESSは初心者で職場にACCESSが無いため困っています。 何か良い方法は無いでしょうか?

  • CSVファイルをアクセスのテーブルに出力する

    こんにちは Access VBA初心者です。 やりたい処理なのですが CSVファイルをmdb内であらかじめ作成されているテーブルに出力したいのですが、 最初にTransferTextwでワークのテーブルにインポートして そのワークテーブルを1レコードずつ読み込みmdbのあらかじめ作成されているテーブルにINSERTしていくという方法しか今思いつきません。 インポートするとワークテーブルはすべてテキスト型になっていますが、 それを違う型の項目にINSERTするということなど可能なのでしょうか? それとももっとスマートな方法があるのでしょうか? ざっくりと書いてしまいましたが、よろしくお願いいたします。

  • accessからsqlserverへのデータ移行について・・・

    access2007からSQLSERVER2008へのデータ移行を考えています。 そこでお聞きしたいのが・・・ テーブルの設計/フィールド名/データ型などが以降先では若干変わり、テーブルデータすべてが必要になるわけでもありません・・・ こんな状態ですが、一番良い方法はどんな移行方法でしょうか・・・ おせーてくらはい・・・。

  • データ移行

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

  • SQLServer からのデータ移行(varbinary)

    SQLServer からのデータ移行(varbinary) SQLServer 2000 から PostgreSQL 8.4.3 へデータ移行を考えているのですが、 つまずいて困っています。 ご存知の方がいらっしゃいましたら教えていただけないでしょうか。 あるテーブル上にvarbinary(32)の項目があり、 クエリアナライザで見ると「0x11223344・・・」という値が入っているのですが、 PostgreSQL側ではこの項目のデータ型はどう定義したらよいでしょうか。 character varying(32)としてみましたが、 定義がふさわしくないのか、SQLがまずいのか、思うようにINSERTができませんでした。 たとえば、 insert into ... values(0x1122334455667788990011223344556677889900112233445566778899001122, ...) とすると --- NOTICE: 識別子"x1122334455667788990011223344556677889900112233445566778899001122"を"x11223344556677889900112233445566778899001122334455667788990011"に切り詰めます SQLステート:42601 --- が返りますし insert into ... values(x'1122334455667788990011223344556677889900112233445566778899001122', ...) では --- ERROR: 値は型character varying(32)としては長すぎます SQLステート:22001 --- が返ります。 実際は、.Net C# のプログラムにてDataTableにSQLServerからデータをFillして、それを元にINSERT文を作成しています。 デバッグすると、Byte配列に[0]17,[1]34... という具合に入ってくるので if ((col.DataType == typeof(String)) || (col.DataType == typeof(DateTime)) ||(col.DataType == typeof(Decimal)) ) { valueColumns.AppendFormat("'{0}',", row[col.ColumnName].ToString()); } else if(col.DataType == typeof(Byte[])) { string tmp = ""; for (int i = 0; i < ((Byte[])row[col.ColumnName]).Length; i++) { tmp += (string.Format("{0:X2}", ((Byte[])row[col.ColumnName])[i])); } valueColumns.AppendFormat("x'{0}',", tmp); } else { valueColumns.AppendFormat("{0},", row[col.ColumnName].ToString()); } のようにDataType別に振り分けて、上記else ifが通るようにコーディングしています。 よろしくお願いいたします。

  • 膨大なデータの有効な移行方法は?(Oracle10g)

    現在1000万件近くデータがあるテーブルをパフォーマンス向上のため、パーティション化することを考えています。 環境は、Oracle10gです。 一旦、パーティション・テーブルを作成した後、データを移行する必要がありますが、 その方法に以下を考えました。  ・Accessのクエリを使って「追加」  ・ObjectBrowserでInsert文を出力し、それでInsert 膨大な件数ですので、どちらにしろ時間がかかります。 どちらかというと、後者のほうがいいのかなぁと思いましたが…。 もしこれ以外に有効な方法(10gに用意されているツール等)がありましたら、ご教授願えませんでしょうか?

  • Accessのデータ共有について

    現在社内の顧客管理システムをAccessにて構築しており、データテーブルファイル(mdb)をファイルサーバに置き、クライアントPCはフォームやクエリだけのmdbを使用してテーブルのリンクでデータ共有しています(Accessのデータ分割ツールにてテーブルとフォーム、クエリを分離しただけの状態で運用しています)。これまでは、この状態でも運用出来ていましたが、データ量が多くなるにつれ、段々動作が重くなってきた為、処理速度改善の為に、以下の二案を検討していますが、どちらの案が効果的なのでしょうか? 【案1】 クライアント用mdbファイルに同じテーブル構成の一時テーブルを作成し、mdbファイル起動時と、「更新」ボタンを別途作成し、「更新」ボタンが押下されたタイミングで、ファイルサーバのデータベースからADOにて一時テーブルに全データを読み込む。更新系の処理は、各クライアントの一時テーブルとファイルサーバのデータベースに対して行う。 【案2】 現状フォームの遷移については、 「DoCmd.OpenForm」関数の引数に検索条件を指定する方法で行っている為、この部分を ・ADOにてデータを取得  ↓ ・遷移後のフォームに値をセット と言った処理に変更する。 また、上記以外の方法で何か良い方法がありましたらご指摘頂ければと思いますので、よろしくお願いします。

専門家に質問してみよう