Транзакция для загрузки данных infile, а затем обновления столбцов - PullRequest
0 голосов
/ 08 февраля 2019

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

START TRANSACTION
LOAD DATA LOW_PRIORITY LOCAL INFILE 'file path' REPLACE INTO 
    TABLE
        tablex CHARACTER SET
        latin1 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (`date_orderable`,
        `id1`,
        `id2,
        `id3,
        `d1`,
        `d2,
        `d3,
        );
update tablex a left join uber_data b on a.id1 = b.id1 
set a.d1 =b.d1;
update tablex a left join uber_data b on a.id2 = b.id2 
set a.d2 =b.d2;
update tablex a left join uber_data b on a.id2 = b.id1 
set a.d3 =b.d3;
COMMIT 

В строке 2 указано, что во время работы произошла ошибка.Кто-нибудь знает, как я могу загрузить данные в таблицу, а затем обновить новые строки?Спасибо!

1 Ответ

0 голосов
/ 09 февраля 2019

В вашем запросе есть несколько синтаксических ошибок:

  • в некоторых полях списка есть несбалансированные обратные пометки (например, <code>d2, должно быть d2`,

  • точка с запятой отсутствует в конце оператора START TRANSACTION;, а также в конце оператора COMMIT;. Без точки с запятой MySQL пытается проанализировать дваоператоры сразу, что приводит к синтаксической ошибке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...