Эти шаги могут использоваться для эмуляции этой функциональности:
1) Создать новую временную таблицу.
CREATE TEMPORARY TABLE temporary_table LIKE target_table;
2) При желании отбросить все индексы из временной таблицы в
SHOW INDEX FROM temporary_table;
DROP INDEX `PRIMARY` ON temporary_table;
DROP INDEX `some_other_index` ON temporary_table;
3) Загрузите CSV во временную таблицу
LOAD DATA INFILE 'your_file.csv'
INTO TABLE temporary_table
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(field1, field2);
4) Скопируйте данные, используя ON DUPLICATE KEY UPDATE
SHOW COLUMNS FROM target_table;
INSERT INTO target_table
SELECT * FROM temporary_table
ON DUPLICATE KEY UPDATE field1 = VALUES(field1), field2 = VALUES(field2);
5) Удалить временную таблицу
DROP TEMPORARY TABLE temporary_table;
Используя SHOW INDEX FROM
и SHOW COLUMNS FROM
, этот процесс может быть автоматизирован для любой данной таблицы.
Вы не возвращаете результат, а печатаете его напрямую. Следовательно, он будет выводиться в том порядке, в котором выполняются функции.Ваш код эквивалентен следующему, который разъясняет порядок, в котором вызываются функции:
a = XMLChild(list3, 2)
b = XMLParent(list2, 1, a)
XMLParent(list1, 0, b)
Попробуйте построить строку в каждой из функций, возвращая ее вызывающей стороне. Затем вызывающий может добавить его в свой строковый буфер и, в свою очередь, вернуть. Затем вы можете вывести такую комбинированную строку и выполнить всю печать в одном месте:
a = XMLChild(list3, 2)
b = XMLParent(list2, 1, a)
print XMLParent(list1, 0, b)