#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.
Также: если они являются повторяющимися значениями, вам следует критически взглянуть на вашу модель базы данных или на вашу настройку в целом.