1

私はここにこのコードを持っています、これは私がcsvファイルからデータベースにデータをインポートすることを可能にします、これは挿入する前にテーブルを切り捨てることです、私は前に切り捨てられたテーブルを削除しようとしましたが、それは渡されませんデータ。ここでこのコードを変更するにはどうすればよいですか?現在のテーブルを空にすることなく、データを挿入するためだけに必要です。

ありがとう..

$deleterecords = "TRUNCATE TABLE imovo"; //empty the table of its current records
mysql_query($deleterecords);

//Upload File
if (isset($_POST['submit'])) {
    if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
        echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>";
        echo "<h2>Displaying contents:</h2>";
        readfile($_FILES['filename']['tmp_name']);
    }

    //Import uploaded file to Database
    $handle = fopen($_FILES['filename']['tmp_name'], "r");

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $import="INSERT into imovo(date,time,location,rbpos_id,mobile_number) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')";

        mysql_query($import) or die(mysql_error());
    }

    fclose($handle);

    print "Import done";

    //view upload form
}else {


}
4

3 に答える 3

3

「以前に切り捨てテーブルを削除しようとしましたが、データが渡されませんでした。」

一意のインデックスがあり、重複レコードを挿入してみたためかもしれません。

于 2012-08-31T09:10:47.777 に答える
0

テーブルには一意の列があると思ったので、テーブルを切り捨てないと、存在するレコードを挿入できません...。

だからあなたがしなければならないこと:

  1. レコードが存在するかどうかを確認します

1a)trueの場合...UPDATEを使用します

1b)falseの場合..INSERTを使用します

  1. また、レコードがCSVに含まれていないかどうかを確認し、DELETEを使用する必要があります

..。

ご覧のとおり、既存のすべてのレコードを処理するのはそれほど簡単ではありません。

于 2012-08-31T09:14:12.240 に答える
0

アップロードするファイルには、以前にアップロードしたデータの一部が含まれていますか?これが事実であり、あなたがそれを知っているなら、あなたは使うことができます

INSERT IGNORE into `imovo`

または、重複した行の一部を置き換える場合は、REPLACEを実行します

REPLACE into `imovo`

これにより、PRIMARYKEYまたはUNIQUEインデックスに応じて重複した行が置き換えられます

http://dev.mysql.com/doc/refman/5.0/en/replace.html

于 2012-08-31T09:19:01.607 に答える