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
Database 如何备份sqlite数据库?_Database_Sqlite_Backup - Fatal编程技术网

Database 如何备份sqlite数据库?

Database 如何备份sqlite数据库?,database,sqlite,backup,Database,Sqlite,Backup,正确的方法是什么? 我只是复制.sq3文件吗 如果站点上有用户,并且文件在复制时正在写入,该怎么办 sqlite3命令行工具的特点是 您可以通过以下方式连接到数据库: sqlite3 my_database.sq3 并使用以下命令运行backup dot命令: .backup backup_file.sq3 除了与数据库的交互连接之外,您还可以执行备份并在之后使用关闭连接 sqlite3 my_database.sq3 ".backup 'backup_file.sq3'" 无论哪种方式,

正确的方法是什么? 我只是复制.sq3文件吗


如果站点上有用户,并且文件在复制时正在写入,该怎么办

sqlite3命令行工具的特点是

您可以通过以下方式连接到数据库:

sqlite3 my_database.sq3
并使用以下命令运行backup dot命令:

.backup backup_file.sq3
除了与数据库的交互连接之外,您还可以执行备份并在之后使用关闭连接

sqlite3 my_database.sq3 ".backup 'backup_file.sq3'"
无论哪种方式,结果都是数据库
my\u database.sq3
的一个名为
backup\u file.sq3
的副本


它不同于常规的文件复制,因为它负责处理当前在数据库上工作的任何用户。数据库上设置了适当的锁,因此备份以独占方式进行。

。备份是最好的方法

sqlite3 my_database .backup my_database.back
您也可以尝试使用.dump命令,它使您能够将整个数据库或表转储到文本文件中。如果指定了TABLE,则仅转储与模式表匹配的表

sqlite3 my_database .dump > my_database.back
使用dump和store制作归档副本的一种好方法是在以后重建数据库

sqlite3 my_database .dump | gzip -c > my_database.dump.gz
zcat my_database.dump.gz | sqlite3 my_database

还要检查这个问题

您使用什么语言和驱动程序来访问数据库?我使用的是PHP和PDO扩展。目前有一个在PHP中公开sqlite备份API的功能请求:您可以在一行中完成所有操作
sqlite3 m_database.sq3“。备份m_database.sq3.bak”
@Googie:我们可以用它来复制吗?or@mOna:这只是一种进行备份的机制。复制意味着动态传播更改(类似于分布式数据库),这对您来说是行不通的。@RonJohn它实际上是一个文件副本,但它也说明,对数据库的写访问受到适当的锁的限制,因此它是一个原子操作,无中间修改。您还应指定一个超时,以最小化数据库被锁定的错误<代码>sqlite3 source.db“.timeout 1000”。在SQLite 3.8.2上的backup backup.db“,
。backup
无法按上述方式工作(“在.backup上缺少文件名参数”),这是最好的答案。如果在许多人使用的工作数据库上使用.backup,则可能无法工作,因为数据库在某个点被锁定。因此,如果您在CRON中使用此功能,它将不起作用,也不会告诉您有错误。。。更好地使用.dump(allways works)或SQLite提供的API。@Memristor但不使用.dump为其他人锁定DB?FWIW,我更喜欢失败的备份(通过邮件发送给管理员)而不是中断的服务。请在您的答案中修复.backup语法。它不需要“>”操作符