SQL备份表

备份是灾难恢复中一些最重要的特性。当涉及到数据库时,备份变得更加重要。这是因为数据库中的操作是永久性的,一旦数据被更改或修改,就没有回滚。

在SQL中有多种备份数据的方法。这可以包括备份整个服务器、整个模式、数据库等。但是,对于更细粒度的备份,我们可以备份单个表,以保留该表中数据的状态。

在本教程中,我们将探讨可以用来用SQL备份表的各种方法和技术。

最好记住,在备份数据的方法中,即使是统一的对象(如表)也可能因目标数据库而异。每个数据库引擎都有用于备份数据的特定实现。

方法1:使用SQL SELECT INTO子句

如果您不熟悉它,SELECT INTO子句允许我们将现有表的副本创建到一个新表中,该表使用不同的名称,但具有相似的模式和数据。

这提供了一种用SQL备份表的近似宇宙方法,而不需要自定义SQL查询和复杂的递归数据复制。

要使用SELECT INTO子句备份一个已存在的表,我们可以运行如下查询:

SELECT *

到backup_table

从original_table

条件;

我们可以指定以下内容:

  1. “backup_table”作为我们希望备份数据的表的名称。
  2. “original_table”指定我们希望备份的数据的名称。
  3. “condition”是一个可选条件,用于筛选希望备份的特定数据。

假设我们想要拍摄Sakila样本数据库中的一个表。我们可以使用SELECT INTO子句,如下面的查询所示:

SELECT *

到film_backup

从sakila.film;

这将创建一个名为“film_backup”的新表,它具有与film表相同的表结构和对象,并包含作为源表的数据。

在某些情况下,您可能希望将数据复制到具有类似表结构的表中。您可以将前面的子句修改为“insert”语句,如下所示:

插入到备份表中

SELECT *

从original_table

条件;

这将数据复制到新表中。最好确保备份表已经存在,并且包含与源表相似的结构。

方法二:SQL Server BACKUP DATABASE

当涉及到SQL Server时,我们可以访问一个内置的BACKUP DATABASE命令,它允许我们备份整个数据库,包括表,如下所示语法:

BACKUP DATABASE数据库名称

TO disk = 'backup_path'

初始化;

这将把指定的数据库备份到指定的文件中。当您需要备份单个表时,这种方法有点过头了。

示例如下:

备份数据库sakila

到磁盘= 'C:\Backup\sakila.bak'

初始化;

这会将Sakila数据库备份到“Sakila .bak”文件中。

方法三:SQL Server批量复制

在SQL Server中备份单个表的更细粒度和更有效的方法是使用批量复制。这是一个非常强大的工具,允许我们在SQL Server表和文件之间复制数据。

我们可以用它来导出一个表作为备份。命令格式如下:

bcp database_name.schema_name。table_name out backup_file.txt -T -c

在给定的语法中:

  • “database_name.schema_name。table_name "指定目标表的FQN(完全限定名)。
  • “backup_file.txt”指定目标文件。
  • “-T”告诉SQL Server使用Windows身份验证。您可以更改为所需的身份验证方法。
  • " -c "指定字符数据类型。

使用示例:

C:\Backup\film_backup.txt -T -c

这将把数据从film表导出到“film_backup.txt”文件中。

结论

在本教程中,我们学习了如何使用各种SQL工具和查询来备份表。最好确保每个数据库引擎都提供特定的工具来备份数据。