int*_*ted 26
有点奇怪,这实际上是备份数据库的常用方法.由于各种复杂的原因,复制实际保存数据的文件本身并不是通常的备份方法.
所有数据库都以这种方式工作,或者至少我从来没有听说过这样的数据库:它们都有一个导出一堆SQL代码的工具,这些代码在执行时会以与以前相同的状态重新创建数据库.转储开始了.
然而,由于不同数据库系统使用的各种SQL方言之间的细微差别,这些各种格式通常是不兼容的.有些实用程序可以在它们之间进行转换,但我不知道任何可以处理所有情况的"Rosetta Stone".
除了作为备份数据库的主要方法之外,当在不同服务器之间(即从开发到测试再到生产)暂存数据库应用程序时,此技术也很有用.
mysqldump为一个或多个表或数据库生成数据的 SQL 表示。由于格式是 SQL,它可以在任何其他 MySQL 服务器上运行,无论架构或主要/次要版本如何(显然,视图不适用于 4.x 等,但它主要是向前兼容的)。
还有另一个工具mysqlhotcopy,但由于该工具生成二进制文件,因此它们与生成它们的机器相关联,不能在其他地方使用。SQL 的优点是可以在任何 MySQL 服务器上运行,并且独立于数据库的底层文件存储机制。
转储 SQL 的两个主要用例是:
有一些不太常见的用途。例如,您的应用程序数据库的 SQL 快照可以用于针对已知状态的单元测试。也可以将 SQL 代码转换为另一种方言,例如 PostgeSQL 或 SQLite,以将您的数据移植到另一个数据库。
您询问其他数据库是否提供 SQL 转储功能。几乎在所有情况下,答案都是肯定的。PostgreSQL 提供了pg_dump,SQLite 有一个.dump命令等。