我正在临时文件夹中创建一个 sqlite 数据库。现在我想将该文件复制到另一个文件夹。是否有任何 sqlite 命令来重命名 sqlite 数据库文件?
我尝试在 C++ 中使用重命名函数,但它返回错误 18。错误 18 的意思是:“包含名称 newname 的目录必须与文件位于同一文件系统上(如名称 oldname 所示)”。
有人可以建议一个更好的方法来做到这一点。
在正确的文件系统上使用临时目录!
首先,sqlite 数据库只是一个文件。可以随意移动或复制它,前提是:
因此将其作为文件移动是正确的。现在有两种方法可以移动文件:
rename
系统调用。前者有很多优点:它不能留下部分写入的文件,它不能留下两个文件,速度非常快,如果你用它来重命名旧文件,没有目标名称不会的句号t 存在(最后是 POSIX 语义,Windows 可以在 NTFS 上做到这一点,但不是 FAT 文件系统)。它还有一个重要的缺点:它只能在文件系统中工作。所以你必须:
/bin/mv
来为你做这件事)。现在我想将该文件复制到另一个文件夹。是否有任何 sqlite 命令来重命名 sqlite 数据库文件?
关闭数据库。使用 shell 将数据库复制到新路径。
另请参阅SQLite 的独特功能:
稳定的跨平台数据库文件
SQLite 文件格式是跨平台的。在一台机器上编写的数据库文件可以复制到具有不同架构的不同机器上并在其上使用。大端或小端,32 位或 64 位无关紧要。所有机器都使用相同的文件格式。此外,开发人员承诺保持文件格式稳定和向后兼容,因此新版本的 SQLite 可以读取和写入旧数据库文件。
大多数其他 SQL 数据库引擎要求您在从一个平台移动到另一个平台时转储和恢复数据库,并且通常在升级到较新版本的软件时。