Простой скрипт - автоматическая загрузка в файл / базу данных sqlite - PullRequest
0 голосов
/ 18 апреля 2019

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

Можно ли сделать это с файлом .bat или .ps1?

sqlite3 path\test.db
DELETE * FROM sales;
.mode csv
.import path2\sales.csv sales_tmp
INSERT INTO sales select * from sales_tmp;
DROP TABLE IF EXISTS sales_tmp;
vacuum;
.quit

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Похоже, что это работает в powershell:

Write-Output @"
DELETE * FROM sales;
.mode csv
.import path2/sales.csv sales_tmp
INSERT INTO sales SELECT * FROM sales_tmp;
DROP TABLE IF EXISTS sales_tmp;
VACUUM;
.quit
"@ | sqlite3 test.db

(Использует диалект Powershell, как описано в моей предыдущей ссылке в комментарии о heredocs)

0 голосов
/ 18 апреля 2019
sqlite3 path\test.db^
 -cmd "DELETE FROM sales;"^
 -cmd ".mode csv"^
 -cmd "CREATE TABLE sales_tmp (col1, col2);"^
 -cmd ".import 'path2\sales.csv' 'sales_tmp'"^
 -cmd "INSERT INTO sales SELECT * FROM sales_tmp;"^
 -cmd "DROP TABLE IF EXISTS sales_tmp;"^
 -cmd "vacuum;"^
 ""

-cmd COMMAND будет запускаться COMMAND перед чтением стандартного ввода.

^ в конце строки является символом продолжения, поэтому можно избежать длинной командной строки.

Вам необходимо создать таблицу sales_tmp перед импортом данных, поэтому я добавил оператор создания таблицы.При необходимости измените имена столбцов.

"" в конце - это оператор sql, который, если он пуст, позволяет sqlite3 выйти.Если аргумент пропущен, он переходит в интерактивный режим.

Для справки командной строки с sqlite3 введите sqlite3 --help в приглашении cmd.

Для интерактивной справки с sqlite3, введите .help в интерактивной подсказке sqlite3.

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