вставьте несколько строк в транзакции, и если одна не удастся, оставьте остальные - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть приложение, которое собирает названия отелей и адреса с разных сайтов.

Мне нужно вставить их в группы - по 10 сразу - в базу данных mysql.Если произойдет сбой (например, текущее имя отеля более 100 символов, а столбец hotel_name имеет тип char (75)), то после неудачных будут потеряны.

Итак, как мне написать транзакцию илизапрос, который имеет 10 операторов вставки друг за другом, но если один из них не выполнен, он позволяет вставлять остальные.

insert into hotels (hotel_id, hotel_name, batch_id)
    values ('18nt2f4jrqsqipf', 'Hotel Urban Flats Vienna City Center', '2019-02-04_20-35-22');
    values ('18nt2fajrqsqk4g', 'Hotel Appartements Castello', '2019-02-04_20-35-22');
    values ('18nt2ghjrqsqx5o', 'Bed and Breakfast Pension Bergkristall', '2019-02-04_20-35-22');
    values ('18nt2gnjrqsqv48', 'hotel garni corona: einfachheit und gastfreundschaft am comer see - scoene aussich im jeden jahreszeit - gaeste sind immer wilkommen', '2019-02-04_20-35-22');
    values ('18nt2gnjrqsqw41', 'Hotel Sommerhotel Don Bosco', '2019-02-04_20-35-22');

Таким образом, в пункте 5-го значения для столбца hotel_name данные длиннее, чемтип данных.Как я могу добиться, чтобы обернуть это в транзакцию (или просто в обычный запрос) таким образом, чтобы, если этот сбой, транзакция продолжала выполнять следующие?Спасибо за ответы

(Кстати, предварительный просмотр кода показывает мой код без разрывов и отступов, хотя я использовал 4 пробела и отступы, извините, если они не отображаются)

1 Ответ

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

После сбора данных с необходимого сайта попробуйте записать их в файл CSV.Затем используйте синтаксис MySQL LOAD DATA для вставки значений из файла CSV в таблицу.

Для получения дополнительной информации проверьте эту ссылку

Но убедитесь, что все элементы в вашем файле CSV должныбыть совместимым с вашей структурой таблицы MySQL.

...