6

関連データを移行することはできますが、列名が異なりますが、あるデータベースから別のデータベースに移行できますか? ここで非常に大量のデータについて話しています。誰かがアイデアを持っていますか?それをCSVにエクスポートして他のデータベースにインポートしようとしましたが、次のエラーが表示されます:

invalid column count in CSV input in line 1

誰かがこれを行う効率的で効果的な方法を持っている場合は、共有してください. または、誰かがこのCSVマッピングをExcelで適切に行う方法を案内できる場合は、本当に感謝しています

4

4 に答える 4

11

これには 2 つのケースがあります。

  1. データベースは同じサーバーに保存されます
  2. データベースは異なるサーバーに保存されています

解決策 1: 同じサーバー内のデータベース

宛先テーブルにデータを挿入するだけです。

insert into dbDestination.tblDestination (field1, field2, ...)
select ...
from dbSource.tblSource

ノート

  1. ステートメントにはselect、宛先テーブルにコピーする必要があるフィールドが含まれている必要があります。
  2. ステートメント内のフィールドは、その部分selectのフィールド リストで指定されたフィールドと同じ順序である必要があります。insert

解決策 2: 異なるサーバーにあるデータベース

データをプレーン テキスト ファイルにエクスポートしてからインポートします。私は個人的に .csv ファイルを好みますが、それはあなた次第です。

2 つの可能性があります。使用するselect... into outfileか、システム ターミナル (コマンド ウィンドウ) を使用するかです。

を。select... into outfileと_load data

  1. サーバーの場所dbSource:

    select ...
    from dbSource.tblSource
    into outfile [your destination file]
    ...
    
  2. ファイルを宛先サーバーにコピーします。

  3. サーバーの場所dbDestination:

    load data local infile [あなたのファイル] ...

ノート

  1. ステートメント内のフィールドは、その部分selectのフィールド リストで指定されたフィールドと同じ順序である必要があります。insert
  2. select... into outfileおよびの適切な使用法については、MySQL リファレンス マニュアルを確認してください。load data...

b. 端末の使用

  1. Linux (またはその他の Unix システム) で、ターミナル ウィンドウを開き、次のコマンドを入力します。

    $ mysql -h [sourceServer] -u [yourUser] -p[yourPassword] dbSource -e"select ..." | sed 's/\t/,/g' > yourDestinationFile.csv
    
  2. ファイルを宛先サーバーにコピーします

  3. MySQL コンソールを起動し、「load data ...」を使用します。

ノート

  1. ステートメント内のフィールドは、その部分selectのフィールド リストで指定されたフィールドと同じ順序である必要があります。insert
  2. この| sed 's/\t/,/g'部分は、mysql クエリの出力を .csv ファイルに変換します。の代わりに別のセパレータを使用できます,。詳細については、http://lowfatlinux.com/linux-sed.htmlsedを確認してください。
  3. 宛先ファイルには行ヘッダーがあるため、データをインポートするときはそれらを無視する必要があります。文末ignore 1 linesに追加するだけです。load data...

あるデータベースから別のデータベースにデータをコピーするのは、非常に簡単な作業です。これがあなたを正しい方向に向けることを願っています。

アドバイス: お使いの MySQL バージョンのリファレンス マニュアルをダウンロードし、手元に置いておいてください。そこでは、ほとんどのソリューションを見つけることができます。

于 2013-04-02T17:38:32.117 に答える
1

これを行う簡単な方法は、次の構文を使用することです。

INSERT INTO Database.Table(field 1, field 2,...)
SELECT * FROM Database2.Table2;
于 2015-10-11T21:42:28.227 に答える