Я запускаю sqlite3 версії 3.7.7, unix 11.4.2, використовуючи цю команду:
sqlite3 auction.db
де Auction.db ще не створено.
sqlite> auction.db < create.sql;
видає мені цю помилку: near "auction": syntax error
Як я можу запустити сценарій?
Я запускаю sqlite3 версії 3.7.7, unix 11.4.2, використовуючи цю команду:
sqlite3 auction.db
де Auction.db ще не створено.
sqlite> auction.db < create.sql;
видає мені цю помилку: near "auction": syntax error
Як я можу запустити сценарій?
Відповіді:
Є багато способів зробити це, один із способів:
sqlite3 auction.db
Далі:
sqlite> .read create.sql
Загалом, проект SQLite має справді фантастичну документацію! Я знаю, що ми часто звертаємось до Google перед документами, але у випадку з SQLite документи справді є технічним написанням у найкращому вигляді. Це чисто, чітко і лаконічно.
Ви хочете , щоб годувати create.sqlINTO sqlite3з оболонки, а не всередині самого SQLite:
$ sqlite3 auction.db < create.sql
Версія SQLite SQLite не розуміє <файли, а ваша оболонка.
<як перенаправлення вводу. (Наприклад, PowerShell.)
<негайно вийде із запиту SQLite і поверне код помилки в оболонку. .read file.sqlзалишить запит і -init file.sqlзавжди поверне 0, тому <найкраще для сценаріїв. Крім того, це міжплатформна система, на відміну від .readякої не підтримує шляхи Windows.
Для виконання простих запитів і повернення до мого сценарію оболонки, я думаю, це добре працює:
$ sqlite3 example.db 'SELECT * FROM some_table;'
sqlite3 example.db 'SELECT * FROM some_table;'замість того, щоб
sqlite3читає команди для виконання не тільки з stdin, але і з останнього аргументу.
Якщо ви використовуєте CMD для Windows, ви можете скористатися цією командою для створення бази даних за допомогою sqlite3
C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"
Якщо у вас немає бази даних з такою назвою, sqlite3 створить її, і якщо у вас її вже є, вона все одно буде її запускати, але з помилкою "TABLENAME уже існує", я думаю, ви також можете використовувати цю команду, щоб змінити вже існуючу база даних (але я не впевнений)
.readкоманду безпосередньо зsqlite3команди:sqlite3 autction.db '.read create.sql'.