Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用tcl备份sqlite3数据库_Sqlite_Tcl - Fatal编程技术网

使用tcl备份sqlite3数据库

使用tcl备份sqlite3数据库,sqlite,tcl,Sqlite,Tcl,我有一个global.sqlite3数据库,我正在尝试从tcl创建它的备份。但是备份命令不起作用。当我运行tcl文件时,它给出了一个错误。另外,bkupglobal.sqlite3的新副本表单也会形成,但当我打开它时,它是空的 错误是备份失败:未知数据库“/home/urmita.banerjee/global.sqlite3 代码如下: package require sqlite3 sqlite3 db global.sqlite3 db backup "/home/urmita.ba

我有一个global.sqlite3数据库,我正在尝试从tcl创建它的备份。但是备份命令不起作用。当我运行tcl文件时,它给出了一个错误。另外,bkupglobal.sqlite3的新副本表单也会形成,但当我打开它时,它是空的

错误是备份失败:未知数据库“/home/urmita.banerjee/global.sqlite3

代码如下:

package require sqlite3

sqlite3 db global.sqlite3

db backup  "/home/urmita.banerjee/global.sqlite3" "/home/urmita.banerjee/bkupglobal.sqlite3"
任何人都可以提供帮助。

在此上下文中,“数据库”是指文件中的架构名称

让我们在Tcl中创建一个db:

$ 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

您是否需要备份命令?是的,我根据此文档本身编写了代码db backup。非常感谢您,我不知道这个主要概念。它现在可以工作。最后一点,源数据库实际上是可选的,所以
db backup test_bak.db
就足够了。@UBan:如果这个答案对您有帮助,请使用勾号接受它。这让有类似问题的浏览器更容易知道答案是有用的。