Открытие оболочки SQLite3, но инициализация с помощью точечных команд? - PullRequest
0 голосов
/ 15 апреля 2020

Из-за создаваемого интерактивного учебного приложения мне нужно инициализировать оболочку SQLite различными точечными командами, но инициирование точечными командами не похоже на передачу строки SQL.

Например, я не могу открыть базу данных SQLite, но проинструктировать ее установить ширину первых 6 столбцов:

./sqlite3 -column -header rexon_metals.db ".width 25 25 25 25 25 25"

Кажется, что она внезапно выходит из оболочки sqlite. Любые идеи о том, как я могу инициализировать с помощью точечных команд?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2020

Вы можете передать команды для запуска с -cmd.

./sqlite3 -column -header -cmd '.width 25 25 25 25 25 25' rexon_metals.db

В качестве альтернативы, -init будет читать команды из файла. Это безопаснее и позволяет избежать проблем с выходом из оболочки.

./sqlite3 -init some_temp_file.sqlite

Подробнее см. Справочную страницу sqlite3 .

1 голос
/ 15 апреля 2020

Вы можете попробовать.

./sqlite3 '.mode -column' '-header on' rexon_metals.db '.width 25 25 25 25 25 25'

Полная команда, которую я делаю.

sqlite3 mydata.db '.mode on' '.header on' '.width 25 25 25 25 25 25' 'select foo,bar,baz,more,qux,lux from mytable DESC limit 20;'

Я всегда использую функцию.

myfunction() {
  sqlite3 rexon_metals.db "$@"
}

Тогда я могу запустить .

myfunction '.mode -column' '-header on' '.width 25 25 25 25 25 25'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...