ここでは特有の問題を抱えています。私は基本的にPHPでfgetcsv()
を使用してデータベースにCSVファイルをインポートするスクリプトを持っています。これはまったく問題ないですし、MySQLの構文ON DUPLICATE KEY UPDATE
を使って古いエントリを更新することもできます(私はMySQLの専門家ではないので、ここで私に尋ねます)。ここでPHP MYSQLでCSVをインポートしてから冗長エントリを比較して削除します
は、コードの一部です:
$handle = fopen($file,"r");
fgetcsv($handle, 1000, ",");//skip first row since they are headers
while(($fileop = fgetcsv($handle, 1000, ",")) !== false) //read line by line into $fileop
{
//read array values into vars
$item1 = $fileop[0];
$item2 = $fileop[1];
$key = $fileop[2];
// and a couple more
// now INSERT/UPDATE data in MySQL table
$sql = mysql_query("INSERT INTO table (item1,item2,key)
VALUES ('$item1','$item2','$key')
ON DUPLICATE KEY UPDATE item1='$item1',item2='$item2'");
}
このすべてが正常に動作します。私が悩んでいるのは、いくつかのエントリが実際のCSVから削除されている可能性があるということです(キーが存在しなくなる可能性があります)。私がしたいのは、もはやCSVに存在しないエントリをMySQLテーブルから削除することです。
意味$key
がCSVから削除された場合、データベーステーブルのその行も削除されます。私はMySQLテーブルのInsert/Updateクエリを実行する前にそれを行うと思いますか?
私は助けていただきありがとうございます。
私はあなたの考えの背後にある論理を理解しています。あなたはもう少し反復して、そのコードがどのように見えるかを教えてください。私はPHPには新しく、こういう広範なコードを書いていますが、私には新しいものです。 – privilegue
さて、それほど難しいことではありませんので、コードをカット&ペーストするだけなので、私はちょうどあなたにコードを与えることを躊躇しています、そして、私は本当のテスト方法や時間がありません。迅速なものです。助言されます。あなたはそれをコピーするのではなく、何が起こるべきかを理解するためにそれを使うべきです! – Nanne
ありがとう!私はそれをより深く理解したいと思います。これまで私が知っていたことはすべて、構文記述と人々がそこに書いた例を見ることから学んだ。私が学ぶ最も簡単な方法は、例題を見て、次にレプリカを見て、私が学んだものを拡張することです。 – privilegue