это не совсем правильный подход, но использование временных таблиц может быть очень полезным, если вы воспользуетесь всеми качественными базами данных.

ая над проектом, размещенным локально, я застрял в управлении загрузками CSV. Одна из задач требует от меня ежедневной загрузки данных, которые имеют либо новые записи, либо обновленный статус для существующих записей. Также существует вероятность того, что некоторые записи (которые существуют в базе данных) не имеют обновленного статуса.

Постановка задачи;

Я создал функцию загрузки CSV, которая загружает файл CSV в определенное место и импортирует информацию в назначенный TABLE. Я хочу знать, как лучше всего проверить записи в базе данных, когда я делаю загрузку CSV.

В идеале это должно работать следующим образом;

если запись не существует (ВСТАВИТЬ данные новой записи из файла CSV)если запись существует и имеет статус ЖЕ, как новый загруженный файл CSV (ИГНОРИРУЙТЕ & ничего не делать)если запись существует и имеет другой статус, чем в новом загруженном файле CSV (ОБНОВИТЬ статус к тому, что упоминается в файле CSV)Структура базы данных / файла CSVtracking_id (автоинкремент)odanumber (загружен через CSV и может иметь повторяющиеся записи)авианакладная (загружена через CSV & UNIQUE)courierful (загружено через CSV и может иметь повторяющиеся записи)delstatus (загружается через CSV и в основном обновляется)deliverydate (загружается через CSV и обновляется с каждой доставкой)

Исходя из вышесказанного, delstatus обновляется почти каждый раз (для существующих записей) новый CSV загружается и, следовательно, должен быть проверен.

Я предполагаю, что мы можем выбратьавианакладнаячтобы проверить, существует ли он, и если это так, проверьте, еслиdelstatus такой же, как файл CSV или обновление. Если «airwaybill» не существует, то новые записи должны быть добавлены в базу данных. Как это спасло бы меня от внесения всех записей в базу данных без необходимости. Или может быть сделано, может быть, в лучшую сторону (что я еще предстоит исследовать).

Что сейчас происходит;

Я могу загрузить полный набор CSV-файлов, создавая новые записи в базе данных с помощью следующего кода.

<?php 

if(isset($_POST['csv']))
{
$sqlname= 'localhost';
$username= 'root';
$table= 'tracking';
$password= '';
$db='aatrack';
$file=$_POST['csv'];
$cons= mysqli_connect("$sqlname", "$username","$password","$db") or die(mysql_error());

$result1=mysqli_query($cons,"select count(*) count from $table");
$r1=mysqli_fetch_array($result1);
$count1=(int)$r1['count'];


mysqli_query($cons, '
    LOAD DATA LOCAL INFILE "'.$file.'"
        INTO TABLE '.$table.'
        FIELDS TERMINATED by \',\'
        LINES TERMINATED BY \'\n\'
        IGNORE 1 LINES
')or die(mysql_error());

$result2=mysqli_query($cons,"select count(*) count from $table");
$r2=mysqli_fetch_array($result2);
$count2=(int)$r2['count'];

$count=$count2-$count1;
if($count>0)
{
    header("location:success.php?id=$count");
}

}

?>

Можете ли вы помочь в руководстве наилучшим способом достижения того же. Я понимаю, что это можно сделать, сначала загрузив информацию в temp_table и сравнив ее перед обновлением записей в таблице LIVE.

Пожалуйста, предложите оптимальный способ достижения результатов.

Спасибо, что прочитали это далеко.

С уважением,

Амит Агнихотри