我正在temp文件夹中创建一个sqlite数据库。现在我想将该文件复制到另一个文件夹。是否有任何sqlite命令重命名sqlite数据库文件?
我尝试在c ++中使用重命名功能,但它返回错误18.错误号18表示:“包含名称newname的目录必须与文件位于同一文件系统上(如名称oldname所示)”。
有人可以建议更好的方法来做到这一点。
答案 0 :(得分:5)
在正确的文件系统上使用临时目录!
首先,sqlite数据库只是一个文件。它可以随意移动或复制,只要:
因此将其作为文件移动是正确的。现在有两种方法可以移动文件:
rename
系统调用。前者有很多优点:它不能留下部分写入的文件,它不能留下两个文件,它是非常快的,如果你用它来重命名旧文件,没有目标的目标name不存在(最后是POSIX语义,Windows可以在NTFS上执行,但不能在FAT文件系统上执行)。它还有一个重要的缺点:它只能在文件系统中运行。所以你必须:
/bin/mv
来为你完成)。 / LI>
答案 1 :(得分:0)
现在,我想将该文件复制到另一个文件夹。是否有任何sqlite命令重命名sqlite数据库文件?
关闭数据库。使用外壳程序将数据库复制到新路径。
另请参见Distinctive Features Of SQLite:
稳定的跨平台数据库文件
SQLite文件格式是跨平台的。写入的数据库文件 可以将一台计算机复制到另一台计算机上并在另一台计算机上使用 不同的架构。大端或小端,32位或64位 没关系。所有机器都使用相同的文件格式。此外, 开发人员已保证保持文件格式稳定,并且 向后兼容,因此较新版本的SQLite可以读写 较旧的数据库文件。
大多数其他SQL数据库引擎要求您转储并还原 数据库从一个平台迁移到另一个平台时 升级到该软件的较新版本。