@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();
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
Adamos
@Adamos
Может быть есть более правильный вариант....

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

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

Войти через центр авторизации
Похожие вопросы