ローカルマシンにデータベースがあり、ホスティングのデータベースにデータをインポートしたい。両方のデータベースは同一で、同じtable names
、column names
などです。
export
からローカルデータベースからphpmyadmin
とimport
を介してテーブルを開くと、ホスティングのphpmyadminを介してエラーがポップアップし、primary key
のエントリが重複していることがわかります操作全体。
Phpmyadminを使用してデータをインポートし、重複エントリをスキップし、プロセスの最後に重複のリストを表示するにはどうすればよいですか?
私ができる解決策は、ホスティングでデータベース内の主キーのすべての値を呼び出し、インポートの前に重複をフィルタリングすることです。しかし、phpmyadminを使用してこれに迅速な解決策があるかどうか疑問に思っていますか?
PhpMyAdminの[設定]タブで、次の値を確認できます。
CSV形式を使用している場合:
SQL形式を使用している場合:
希望することを行うには、いくつかの方法があります。
残忍な方法:
TRUNCATE TABLE yourTbl; -- emtpies out the table
次にインポートしますが、データが失われる可能性があるため、おそらくバックアップテーブルを作成します。すべてのことを考慮しますが、これを行わないでください。以下にリストされている選択肢を確認してください。
INSERT
句を使用して、独自のIGNORE
クエリを作成します。
INSERT IGNORE INTO yourTbl -- as shown in the linked duplicate
ただし、ファイルをインポートしているため、クエリはLOAD DATA [LOCAL] INFILE
になります。 マニュアル でわかるように、IGNORE
をそのクエリに簡単に追加することもできます。
LOAD DATA LOCAL INFILE '/path/to/files/filename1.csv' IGNORE -- IGNORE goes here
INTO TABLE your_db.your_tbl
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(`field1`,`field2`);
それでおしまい。このような独自のクエリを作成することに不安がなければ、心配する必要はありません。他にもやりたいことがあります。
CLIの方法:
mysqlimport -i dbname fileToImport
# Or
mysqlimport --ignore dbname fileToImport
また、CLIで、上記のLOAD DATA
クエリを含むファイルを作成してから、次の操作を行います。
$: mysql -u root -p
*********** #enter password
mysql> source /path/to/queryFile.sql
これには、コマンドラインにアクセスしてこのコマンドを実行する必要があります MySQLのマニュアルページはこちら
PhpMyAdminを使用すると、インポート時に「重複を無視する」というチェックボックスが表示されます。チェックしてインポートします。 スクリーンショットのあるページです
チェック "エラーを無視"を選択することもできますが、これは別のブルートフォースアプローチであり、お勧めしません。