Nano Hash - криптовалюты, майнинг, программирование

Импорт файла CSV в базу данных MySQL с использованием PDO, частично рабочий

Я нахожусь в процессе обновления всего своего кода для использования PHP 7. Я пытаюсь заставить этот код PDO работать. Этот код вставляет только полностью отсутствующие строки. Он не обновляет отдельные столбцы. Поэтому, если в столбце одного человека есть данные для обновления, они не обновляются. Но если я полностью удалю строку, она снова вставит эту строку. Как сделать так, чтобы он обновлял отдельные фрагменты данных.

<?php

  $databasehost = "myHOST"; 
  $databasename = "myDATABASEname"; 

  $databasetable = "databseTABLE"; 

  $databaseusername="USERname"; 
  $databasepassword = "PASSWORD"; 

  $fieldseparator = "@@@@"; 
  $lineseparator = "$$$$";

  $csvfile = "/fileLOCATION/LOCATION/CSVfile.csv";


  if(!file_exists($csvfile)) 
  {
    die("File not found. Make sure you specified the correct path.");
  }



  try 
  {
    
    $pdo = new PDO(
                  "mysql:host=$databasehost;dbname=$databasename", 
                  $databaseusername, 
                  $databasepassword,
                  array
                  (
                    PDO::MYSQL_ATTR_LOCAL_INFILE => true,
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
                  )
                  );
  } 
  catch (PDOException $e) 
  {
    die("database connection failed: ".$e->getMessage());
  }

  $affectedRows = $pdo->exec
  (
    "LOAD DATA LOCAL INFILE "
    .$pdo->quote($csvfile)
    ." INTO TABLE `$databasetable` FIELDS TERMINATED BY "
    .$pdo->quote($fieldseparator)
    ."LINES TERMINATED BY "
    .$pdo->quote($lineseparator)
  );

  echo "Loaded a total of $affectedRows records from this csv file.\n";

?>

Я пытался сделать это, но он перестает обновлять все без ошибок. Он просто говорит, что загружено 0 строк.

$columns = "('ColunmName01','ColunmName02',ColunmName03,ColunmName04,ColunmName05,ColunmName06)";
.$pdo->quote($columns)

Я просмотрел десятки сообщений и попробовал различный код. Кажется, я пока не могу заставить работать код PDO в PHP. Мы будем очень признательны за любые советы.

24.07.2021

  • Если вы обновляете свой код, обновите его до PHP8. С ноября будет поддерживаться только PHP7.4+, а примерно через год будет поддерживаться только PHP8. 24.07.2021
  • @TangentiallyPerpendicular. Я посмотрю на PHP 8. Я не уверен, что рекомендуемая страница работает. Я попытаюсь собрать его и посмотреть, работает ли он. Можно спросить? В чем причина того, что этот код действительно не работает? 24.07.2021
  • Кажется, я разобрался. Я добавил «ЗАМЕНИТЬ В ТАБЛИЦУ» вместо «В ТАБЛИЦУ». Будет ли это правильным решением? Теперь это работает. Единственный недостаток, который я вижу, это то, что он снова загружает все строки - я думаю. 24.07.2021
  • LOAD DARA INFILE не поддерживает ON DUPLICATE KEY UPDATE, поэтому любые дубликаты в вашем CSV-файле игнорируются. Вероятно, где-то в файле журнала есть предупреждение. Метод, используемый на странице, на которую я ссылаюсь, работает, загружая CSV во временную таблицу и используя оттуда UPDATE. REPLACE удалит существующую строку и вставит новую. Это приведет к потере всех обновлений из других источников и приведет к снижению производительности при любых необходимых ключевых обновлениях. Эти вещи могут не иметь значения в вашем приложении. 25.07.2021
  • @TangentiallyPerpendicular - я понимаю - ON DUPLICATE KEY UPDATE, безусловно, лучший способ сделать это - это немного сложнее, но у него больше функций. Спасибо. 25.07.2021

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..