从命令行运行 Sqlite3 脚本



我正在编写一个 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
}

相关内容

  • 没有找到相关文章

最新更新