Mysql - объединение «Загрузить данные Infile» на существующие данные столбца Mysql - PullRequest
0 голосов
/ 10 октября 2019

Я использую приведенный ниже код для обновления полей в Mysql через импорт CSV, который работает нормально.

$sql = "
LOAD DATA INFILE 'file.csv' 
REPLACE INTO TABLE items 
CHARACTER SET utf8 FIELDS TERMINATED BY ',' 
ENCLOSED BY '\"' ESCAPED BY '' 
LINES TERMINATED BY '\r\n' 
(PROD_NO,SUP_NO,NEW_TAGS);

$result = mysqli_query($db2,$insertsql);

Теперь я пытаюсь объединить значения в третьем столбце CSV (NEW_TAGS) с концом данных, которые уже существуют в Mysql (столбец OLD_TAGS).

Я нашел примеры конкатенации жесткой строки с импортированными данными, но не могу найти способ объединения данных CSV с тем, что уже есть в Mysql.

Я думаю, что это должно быть что-то вроде этого, но я могу 't заставить его работать:

$sql = "
LOAD DATA INFILE 'file.csv' 
REPLACE INTO TABLE items 
CHARACTER SET utf8 FIELDS TERMINATED BY ',' 
ENCLOSED BY '\"' ESCAPED BY '' 
LINES TERMINATED BY '\r\n' 
(PROD_NO,SUP_NO,@NEW_TAGS)
SET OLD_TAGS = CONCAT_WS(',', `OLD_TAGS`,@NEW_TAGS)";

$result = mysqli_query($db2,$insertsql);

Пример таблицы SQL:
PROD_NO |SUP_NO |ITEM_NAME |OLD_TAGS
1000 |ЯБЛОКО |IPhone |Ключевое слово_1, Ключевое слово_2
1001 |ЯБЛОКО |IPOD |Ключевое слово_1
1002 |ЯБЛОКО |IPAD |Ключевое слово_1, Ключевое слово_2

Пример CSV-файла:
1000 |ЯБЛОКО |IPhone |Ключевое слово_3, Ключевое слово_4
1001 |ЯБЛОКО |IPOD |Ключевое слово_2
1002 |ЯБЛОКО |IPAD |Ключевое слово_3, Ключевое слово_4
1007 |ANDROID |ТЕЛЕФОН |Ключевое слово_1

У меня есть индекс для PROD_NO, SUP_NO, чтобы сделать уникальную запись. Когда я импортирую CSV, я бы хотел, чтобы старые записи обновлялись, чтобы добавить новые теги, или создавалась новая запись, которая копирует всю старую строку и объединяет новые данные в конец столбца.

Ожидаемая таблица Mysql после даты загрузки Infile:
1000 |ЯБЛОКО |IPhone |ключевое слово_1, ключевое слово_2, ключевое слово_3, ключевое слово_4,
1001 |ЯБЛОКО |IPOD |Ключевое слово_1, Ключевое слово_2
1002 |ЯБЛОКО |IPAD |ключевое слово_1, ключевое слово_2, ключевое слово_3, ключевое слово_4,
1007 |ANDROID |ТЕЛЕФОН |Ключевое слово_1

Если это возможно, я был бы признателен за пример того, как это может быть достигнуто. Спасибо:)

...