Как автоматизировать процесс с инструментом командной строки sqlite3.exe?

Вызов неверного указателя приводит к неопределенным результатам для каждой спецификации. Это не обязательно провалится.

Обычно (CPU / OS / компилятор / ... зависимый) компилятор вообще не заботится об этом. Он просто дает то, что в настоящее время находится на этом адресе памяти. Например, в архитектуре x86 вы видите ошибку только в том случае, если адрес находится на странице памяти, которая не привязана к вашему процессу (или ваш процесс не имеет доступа к этому доступу), поэтому исключение будет вызываться процессором (ошибка защиты), которую ОС будет обрабатывать надлежащим образом (и, вероятно, приведет к отказу вашего процесса). Иногда используется трюк, чтобы доступ к адресу 0 всегда вызывал нарушение доступа: ОС устанавливает биты чтения / записи первой страницы адресного пространства в таблице страниц равным 0, так что любой доступ к этой странице будет всегда генерировать исключение.

54
задан dave 18 March 2009 в 22:16
поделиться

2 ответа

Создайте текстовый файл со строками, Вы хотите ввести в sqlite программу командной строки, как это:

CREATE TABLE log_entry (  );
.separator "\t"
.import logfile.log log_entry

и затем просто звонят sqlite3 database.db < commands.txt

53
ответ дан Joey 7 November 2019 в 17:57
поделиться

Создайте отдельный текстовый файл, содержащий все команды, которые Вы обычно вводили бы в приложение оболочки sqlite3:

CREATE TABLE log_entry ( <snip> );
.separator "\t"
.import /path/to/logfile.log log_entry

Сохраняют его как, скажем, impscript.sql.

Создают пакетный файл, который называет оболочку sqlite3 с тем сценарием:

sqlite3.exe yourdatabase.db < /path/to/impscript.sql

Вызов пакетный файл.

На ноте стороны - при импорте, удостоверяются, что обернули ВСТАВКИ в транзакцию ! Это даст Вам мгновенное 10 000%-е ускорение.

17
ответ дан Mihai Limbășan 7 November 2019 в 17:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: