Можете ли вы принудительно остановить импорт SQLite при первой ошибке? - PullRequest
1 голос
/ 15 октября 2019

Я использовал инструмент командной строки sqlite для .import файлов CSV. Время от времени у нас будут проблемы с данными в CSV, например, нарушение внешних ограничений.

Файлы CSV имеют большой размер (~ 10 тыс. Записей). SQLite будет продолжать попытки записи по очереди. Эти данные таковы, что при наличии одной ошибки большинство, если не все, будут иметь одинаковую ошибку. В результате:

  • Журналы сложны в использовании и
  • Случаи возникновения ошибок занимают много времени (~ 10 × нормально).

Итак, я бы хотел, чтобы он завершился при первой ошибке.

Соответствующая часть используемых скриптов выглядит следующим образом:

PRAGMA foreign_keys = ON;
BEGIN TRANSACTION;

-- (Some related SQL to setup other data goes here)

.mode csv
.separator ,
.import filename.csv table_name

COMMIT;

Есть ликакой-нибудь способ заставить инструмент командной строки прекратить импорт при появлении первой ошибки?

Я посмотрел в pragmas , но не увидел ничего применимого, и .import*Команда 1023 *, похоже, не имеет возможности для этого. Команда .bail on не приводит к ее остановке в строке ошибки CSV, только для команды, следующей за CSV .import.

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