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