если нижеприведенные программные бомбы посередине, как мне восстановить программу или заставить ее работать из указанной строки кода
Вы не можете.
Ваш код очень таинственный, потому что таблица создания получит сообщение об ошибке перед каждой вставкой, кроме первой.
Если, однако, вы хотите сделать длинный ряд вставок из одной старой таблицы в одну новую таблицу,
и вас беспокоит вероятность того, что он не завершится правильно, у вас есть два варианта для сохранения необходимой информации о состоянии.
Уникальные ключи.
Порции.
запрос.
Уникальные ключи .
Если каждая строка имеет уникальный ключ, некоторые вставки получат ошибку, потому что строка является дубликатом.
Если программа «Бомба», вы просто перезапустите. Вы получаете много дубликатов (что вы ожидали). Это не неэффективно.
Порции .
Другой метод, который мы используем, - это запросить все строки из старой таблицы и включить «пакетный» номер, который увеличивается каждые 1000 строк. batch_number = row_count // 1000
.
Вы создаете файл "номер серии" с номером -1
.
Ваша программа запускается, она читает номер партии. Это последняя партия, которая была закончена.
Вы читаете исходные данные, пока не доберетесь до номера партии> последнего, который закончился.
Затем вы делаете все вставки из партии.
Когда номер партии изменяется, выполните фиксацию и запишите номер партии в файл. Таким образом, вы можете перезапустить любую партию.
При перезапуске после «бомбы» вы можете получить несколько дубликатов из частичной партии (что вы ожидали). Это не неэффективно.
Запрос .
Вы можете запрашивать перед каждой вставкой, чтобы увидеть, существует ли строка. Это неэффективно.
Если у вас нет уникального ключа, вы должны выполнить сложный запрос, чтобы увидеть, была ли строка создана при предыдущем запуске программы.