我正在编写一个 shell 脚本来 scp 一个项目,其中一部分涉及在我的数据库中传输一些重要的表。
我在文件SQLTableTransfer
中存储了以下内容:
.o MyTable1.sql;
.dump MyTable1;
.o MyTable2.sql;
.dump MyTable2;
.o MyTable3.sql;
.dump MyTable3;
并抓住了机会
$ sqlite3 SQLTableTransfer
但这刚刚打开了 Sqlite3 shell。从命令行运行此类脚本的正确方法是什么?
您提供给sqlite3
程序的参数是数据库文件名。
要从文件执行命令,必须将输入重定向到该文件:
$ sqlite3 mydatabase.db < SQLTableTransfer
或告诉它从该文件读取:
$ sqlite3 mydatabase.db ".read SQLTableTransfer"
对于 Windows CLI,假设您的数据库已加载:
sqlite> .read C:\somesubdir\some.sql
您可以按如下方式获取空间表的列表:
echo "SELECT f_table_name FROM geometry_columns;" | spatialite -noheader -silent your_db.sqlite
对于想把它转储到他们.bashrc
的懒惰者:
### Execute an sqlite3 file on a given db
sql3-exec () {
# TODO: write a --help flag that doubles as error handling
# TODO: Ensure that $1 is a db; Else display --help
# TODO: Ensure that $2 is a .sql file; Else display --help
# TODO: Probably store a backup (or at least a flag)...
sqlite3 $1 ".read $2"
true
}