Смешивание операторов SQL с SQLite .commands
может быть немного сложнее:
$ sqlite3 test.db 'create table X(x integer); .dump'
Error: near ".": syntax error
Самый простой и универсальный способ справиться с этим, вероятно, заключается в предоставлении всех команд для стандартного ввода оболочки командной строки SQLite3, разделенных символами новой строки, как вы их набираете:
$ sqlite3 test.db <<EOF
> CREATE TABLE TEST(X INTEGER);
> .dump
> EOF
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE TEST(X INTEGER);
COMMIT;
Поскольку здесь документы доступны не во всех оболочках, вы можете использовать промежуточный файл, чтобы обойти это ограничение:
$ cat test.sql
CREATE TABLE TEST(X INTEGER);
.dump
$ sqlite3 test.db <test.sql
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE TEST(X INTEGER);
COMMIT;