Как обновить базу данных MySQL с помощью CSV (плоский файл) и проверить данные перед вставкой - PullRequest
2 голосов
/ 16 июня 2011

У меня около 40 тыс. Записей, которые мне нужно ежедневно обновлять в своем приложении php / mysql. Какой рекомендуемый лучший подход?

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

Однако для данных, которые имеют опции MultiSelect или несколько допустимых значений? Как проверить их перед обновлением в базе данных.

Параметры разграничены с помощью piped.

Так, например, данные с несколькими вариантами выбора - Тип цвета Допустимые значения RED ЗЕЛЕНЫЙ СИНИЙ BROWN ЧЕРНЫЙ WHITE

Примеры сценариев с необработанными значениями:

Дело 1 Необработанные данные, которые необходимо проверить RED | GREEN | YELLOW

Как можно проверить эти данные во временной таблице, чтобы КРАСНЫЙ И ЗЕЛЕНЫЙ прошли через проверку, а ЖЕЛТЫЙ был удален и занесен в журнал ошибок?

Как можно выполнить вышеуказанную проверку в Bulk для плоского файла csv / tabdelimited с записями 40K плюс?

1 Ответ

0 голосов
/ 17 июня 2011

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

Чтобы добавить к вашей идее, почему бы не создать функцию для проверки определенного столбца. Для столбцов с несколькими правильными значениями вы просто помещаете свой оператор проверки в оператор переключателя или что-то внутри этой функции.

Пример:

//Example function validates a field that contains an integer value
function validateField1($x)
{

   //if necessary you could parse apart the value before "switching" it.

   if(isset($x))
   {
      switch($x)
      {
         case 1: //integer 1 is a valid value
            return true;
         case 3: //integer 3 is a valid value
            return true;
         default://for all other values return false
            return false;
      }
   }
}

Таким образом, вы можете оценивать поля в каждом конкретном случае. Кроме того, если ваша функция validate возвращает ложное значение, вы можете программно редактировать файл .csv перед его загрузкой в ​​базу данных.

Я понятия не имею, сработает ли это для вас, но дайте нам знать, как это получается!

С уважением,

Н

...