7

私の会社は現在データベースを移動しており、テーブルの 1 つのセットを古い MySQL インスタンスから新しいインスタンスに移しています。この移行の前にいくつかの開発を行っており、一部のテーブルの構造が元の構造から変更されています (たとえば、列が削除されました)。

そのため、現在、古いデータベースからデータをダンプし、新しいテーブルに再挿入しようとしています。もちろん、テーブルよりも多くのフィールドを含む行を挿入しようとすると、インポートは失敗します。

必要なフィールドのみを新しいテーブルにインポートするための最良の方法は何ですか?

4

4 に答える 4

3

まず、古い構造で新しいデータベースを作成するか、現在のデータベースに一時テーブルを作成します。次に、各行の挿入ステートメントを使用してスクリプトを実行しますが、値は新しい構造にあるフィールドのみにする必要があります。

insert into newTable select row1,row2 from tempTable
于 2009-09-10T03:49:09.110 に答える
3

適切に以下を更新します。

SELECT 'INSERT INTO NEW_TABLE ... ('+ to.column +');'
  FROM OLD_TABLE ot

列リストを使用して、新しいデータベースのテーブルに INSERT ステートメントが必要です。次に、古いテーブルの値に基づいて値の部分を入力します。古い環境で実行すると、新しい環境用のデータが挿入されます。コピーしてスクリプトに貼り付けるだけです。

ただし、データ型はそれに応じて処理する必要があることに注意してください-日付(時間を含む)と文字列は、テキストを扱っているため処理する必要があります。

于 2009-09-10T05:26:56.923 に答える
0

MySQL 5.1 を使用している場合、この場合はやり過ぎかもしれませんが、強力な解決策は、xml mysqldump を実行し、XSLT を使用してそれを変換することです。残念ながら、その xml ファイルの再インポートは 5.0 ではサポートされていません。5.1、5.4、または 6.0 が必要です。

于 2009-09-10T03:47:23.383 に答える