我想自动将数据加载到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
答案 0 :(得分:0)
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
将在读取stdin之前运行COMMAND
。
行尾的^
是连续字符,因此可以避免使用较长的命令行。
在导入数据之前,您确实需要创建sales_tmp
表,因此我添加了
表创建语句。根据需要调整列名称。
最后的""
是sql语句,如果为空,则允许sqlite3
退出。
如果省略该参数,则它将进入交互模式。
要获取有关sqlite3
的命令行帮助,请在sqlite3 --help
提示符下键入cmd
。
要获得有关sqlite3
的交互式帮助,请在交互式.help
提示符下键入sqlite3
。
答案 1 :(得分:0)
这似乎在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方言herestring,如我先前的链接中有关heredocs的评论中所述)