使用tcl备份sqlite3数据库

时间:2018-06-28 17:18:13

标签: sqlite tcl

我有一个数据库global.sqlite3,我正在尝试从tcl创建其备份。但是backup命令不起作用。运行tcl文件时出现错误。同样,形成了新的副本形式bkupglobal.sqlite3,但是当我打开它时它是空的。

错误是backup failed: unknown database "/home/urmita.banerjee/global.sqlite3

代码如下:

package require sqlite3

sqlite3 db global.sqlite3

db backup  "/home/urmita.banerjee/global.sqlite3" "/home/urmita.banerjee/bkupglobal.sqlite3"

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

在这种情况下,“数据库”是指文件中的架构名称。

让我们在Tcl中创建一个数据库:

$ tclsh
% package req sqlite3
3.11.0
% sqlite3 db test.db
% db eval {CREATE TABLE t1(a int, b text)}
% db close
% exit

现在,让我们看看使用sqlite3命令行工具有什么

$ sqlite3 test.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> .schema
CREATE TABLE t1(a int, b text);
sqlite> .databases
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /home/jackman/tmp/test.db                                 
1    temp                                                                       
sqlite> .q

我们可以看到该文件中的默认数据库名称为“ main”。让我们添加一行并进行备份:

$ tclsh
% package req sqlite3
3.11.0
% sqlite3 db test.db
% db eval {insert into t1 values (42,"foo")}
% db backup main test_bak.db
% exit

$ ls -l test*.db
-rw-r--r-- 1 jackman jackman 2048 Jun 28 14:41 test.db
-rw-r--r-- 1 jackman jackman 2048 Jun 28 14:43 test_bak.db

$ sqlite3 test.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> .schema
CREATE TABLE t1(a int, b text);
sqlite> select * from t1;
42|foo
sqlite> .q

$ sqlite3 test_bak.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> .schema
CREATE TABLE t1(a int, b text);
sqlite> select * from t1;
42|foo
sqlite> .q