从命令行运行Sqlite3脚本

rwo*_*lst 16 sql sqlite bash shell

我正在编写一个shell脚本来scp一个项目,其中一部分涉及在我的数据库中传输一些重要的表.

我在文件中存储了以下内容SQLTableTransfer:

.o MyTable1.sql;
.dump MyTable1;

.o MyTable2.sql;
.dump MyTable2;

.o MyTable3.sql;
.dump MyTable3;
Run Code Online (Sandbox Code Playgroud)

并抓住机会

$ sqlite3 SQLTableTransfer
Run Code Online (Sandbox Code Playgroud)

但这只是打开了Sqlite3 shell.从命令行运行这样的脚本的正确方法是什么?

CL.*_*CL. 36

您为sqlite3程序提供的参数是数据库文件名.

要从文件执行命令,必须将输入重定向到该文件:

$ sqlite3 mydatabase.db < SQLTableTransfer
Run Code Online (Sandbox Code Playgroud)

或告诉它从该文件中读取:

$ sqlite3 mydatabase.db ".read SQLTableTransfer"
Run Code Online (Sandbox Code Playgroud)

  • 没关系:) 它有超过 2k 的视图,所以我想通常有兴趣在 sqlite3 中导入 sql 脚本的人会来(像我一样),即使与 windows 没有直接关系,这个解决方案对我有用。我认为提及 utf8 连接很重要,因为它在某些系统(例如 Windows)上无法正常工作。在找到这个之前,我已经用谷歌搜索了一个小时。 (2认同)

And*_*ven 5

对于 Windows CLI,假设您的数据库已加载:

sqlite> .read C:\\somesubdir\\some.sql
Run Code Online (Sandbox Code Playgroud)