@Dima07-100
Слушаю умных людей

Как удалить данные в базе данных при импорте из CSV?

Добрый день, уважаемы участники форума. У меня есть скрипт импорта данных из CSV в базу данный MYSQL. Скрипт рабочий, работает стабильно. Но мне нужно что бы он перед загрузкой данных из СSV УДАЛИЛ строки которые уже содержаться в базе. Т.е. схема такая :
1) Проверяет есть ли строки в базе данных с таким же ID как в листе CSV. Сам же ID указан в пером столбце таблицы ;
2) Если такие строки есть, то он их удаляет ;
3) А дальше загружает все данные из листа в базу.

Это нужно для обновления данных в таблице по ID / Может быть есть более правильный вариант.... я не знаю.
Буду очень благодарен - если кто нибудь даст совет :)
Мой код:
set_time_limit(2400);

$mysqli = new mysqli("localhost" , "---" , "---" , "----");

// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$table_name= "account";

$csv_file = "2221.csv"; // Name of your CSV file
$csvfile = fopen($csv_file, 'r');
$field_csv = array();
$i = 0;
while (($csv_data = fgetcsv($csvfile, 0, ";")) !== FALSE) {
if($i==0) { $i++; continue; }  // to exclude first line in the csv file.

$field_csv['id'] =mysqli_real_escape_string( $mysqli, $csv_data[0] );  // 1
$field_csv['name'] = mysqli_real_escape_string( $mysqli, $csv_data[1]     ); // 2
$field_csv['tel2'] = mysqli_real_escape_string( $mysqli, $csv_data[2] ); // 3



$query = "INSERT INTO $table_name SET id = '".$field_csv['id']."',name = '".$field_csv['name']."',tel2 = '".$field_csv['tel2']."' ";
mysqli_query($mysqli,$query);

}

fclose($csvfile);

echo "CSV data successfully imported to table!! - OK";

// close connection
$mysqli->close();
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Adamos
@Adamos
Может быть есть более правильный вариант....

INSERT ... ON DUPLICATE KEY UPDATE
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы