什么是sql-dump?

Yan*_*ang 14 sql database dump mysqldump

我知道SQL转储是一系列插入SQL语句,它们反映了数据库中的所有记录.但它用于什么?我们为什么要转储数据库记录?每个数据库都支持转储功能吗?

int*_*ted 26

有点奇怪,这实际上是备份数据库的常用方法.由于各种复杂的原因,复制实际保存数据的文件本身并不是通常的备份方法.

所有数据库都以这种方式工作,或者至少我从来没有听说过这样的数据库:它们都有一个导出一堆SQL代码的工具,这些代码在执行时会以与以前相同的状态重新创建数据库.转储开始了.

然而,由于不同数据库系统使用的各种SQL方言之间的细微差别,这些各种格式通常是不兼容的.有些实用程序可以在它们之间进行转换,但我不知道任何可以处理所有情况的"Rosetta Stone".

除了作为备份数据库的主要方法之外,当在不同服务器之间(即从开发到测试再到生产)暂存数据库应用程序时,此技术也很有用.


rjh*_*rjh 7

mysqldump为一个或多个表或数据库生成数据的 SQL 表示。由于格式是 SQL,它可以在任何其他 MySQL 服务器上运行,无论架构或主要/次要版本如何(显然,视图不适用于 4.x 等,但它主要是向前兼容的)。

还有另一个工具mysqlhotcopy,但由于该工具生成二进制文件,因此它们与生成它们的机器相关联,不能在其他地方使用。SQL 的优点是可以在任何 MySQL 服务器上运行,并且独立于数据库的底层文件存储机制。

转储 SQL 的两个主要用例是:

  • 备份数据库数据。可以将 SQL 读入(“回放”)到一个空的数据库服务器,它将重新创建表并用行填充它们。
  • 将数据迁移到另一台服务器。假设您要从 MySQL 5.0 升级到 5.1。你有两台机器。您使用 mysqldump 在 5.0 机器上生成 SQL 转储,并将其提供给 5.1。

有一些不太常见的用途。例如,您的应用程序数据库的 SQL 快照可以用于针对已知状态的单元测试。也可以将 SQL 代码转换为另一种方言,例如 PostgeSQL 或 SQLite,以将您的数据移植到另一个数据库。

您询问其他数据库是否提供 SQL 转储功能。几乎在所有情况下,答案都是肯定的。PostgreSQL 提供了pg_dump,SQLite 有一个.dump命令等。