我想创建一个批处理脚本来删除我的数据库中的所有记录。
如果我启动命令行界面,我没有问题:
[tomcat@scsrv26v pycsw]$ sqlite3 /var/www/pycsw/tests/suites/cite/data/records.db
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> delete from records;
sqlite> .quit
但是如果我尝试从批处理中运行它,它就不起作用:
#!/bin/bash
sqlite3 -batch /var/www/pycsw/tests/suites/cite/data/records.db <<"EOF"
delete from records;
.quit
EOF
这是我得到的错误:
Error: near line 1: no such table: records
知道问题是什么吗?
答案 0 :(得分:1)
这是我第一次看到指定的语法。对不起,我不知道它是如何工作的。
但这可以通过((我在windows批处理文件中使用这个,据我所知也在linux中)来解决:
直接从命令行命令
sqlite3 records.db 'delete from records'
命令管道传输到sqlite
echo delete from records; | sqlite3 records.db
当然,您可以将命令放在文件中并重定向到sqlite
sqlite3 records.db < myCommands.sql
答案 1 :(得分:0)
可能是.db文件参数的路径(参见No Such Table error)。如果.db不存在,则使用空db文件创建。
要测试,看看是否有效:
#!/bin/bash
sqlite3 -batch tests/suites/cite/data/records.db <<"EOF"
select count(*) from records;
.quit
EOF
话虽如此,这对我有用:
$ sqlite3 --version
3.8.7.1 2014-10-29 13:59:56 3b7b72c4685aa5cf5e675c2c47ebec10d9704221
$ sqlite3 tests/suites/cite/data/records.db "delete from records"