Заменить пропущенное значение на ячейку выше в Perl или MySQL?

#mysql #perl #csv

#mysql #perl #csv

Вопрос:

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

Есть ли способ, которым я могу реализовать следующее, когда я импортирую файл .csv в Perl, а затем экспортирую в MySQL?

если (значение равно нулю)

значение = значение выше.

Спасибо!

Ответ №1:

Почему бы вам не поместить отдельные значения, которые вы читаете из файла CSV, в массив (например, @FIELD_DATA). Затем, когда вы сталкиваетесь с пустым полем во время итерации по строке (например, для столбца 4), вы можете написать

если (длина($CSV_FIELD[4])) { $CSV_FIELD[4] = $FIELD_DATA[4] }

Ответ №2:

Не с помощью инструкции import afaik. Однако вы могли бы использовать триггеры (http://dev.mysql.com/doc/refman/5.0/en/triggers.html ). Имейте в виду, однако, что это серьезно повлияет на производительность оператора import.

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