我正在编写一个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"
好,谢谢。但是出于某种原因,当我
.dump
在执行此操作时,它只是转储表PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; COMMIT;
最近,我一直在尝试导入包含utf8编码的sql脚本,该脚本包含德国字符äöüß等国家字符,事实证明,第二种方法是唯一可行的方法。其他所有解决方案都只导入问号(PowerShell脚本需要它)。
@ t3chb0t这个问题不是关于Windows的。
没关系:)它具有超过2k的视图,所以我想通常来说有兴趣在sqlite3中导入sql脚本的人都是(像我一样)来访问的,即使与Windows没有直接关系,此解决方案也对我有用。我认为提到utf8连接很重要,因为在某些系统(例如Windows)上,否则它将无法正常工作。在找到之前,我已经在Google上搜索了一个小时。
@GuilhermeSalomé如何在shell中使用变量将是一个不同的问题。