SQL备份表
备份是灾难恢复中一些最重要的特性。当涉及到数据库时,备份变得更加重要。这是因为数据库中的操作是永久性的,一旦数据被更改或修改,就没有回滚。
在SQL中有多种备份数据的方法。这可以包括备份整个服务器、整个模式、数据库等。但是,对于更细粒度的备份,我们可以备份单个表,以保留该表中数据的状态。
在本教程中,我们将探讨可以用来用SQL备份表的各种方法和技术。
最好记住,在备份数据的方法中,即使是统一的对象(如表)也可能因目标数据库而异。每个数据库引擎都有用于备份数据的特定实现。
方法1:使用SQL SELECT INTO子句
如果您不熟悉它,SELECT INTO子句允许我们将现有表的副本创建到一个新表中,该表使用不同的名称,但具有相似的模式和数据。
这提供了一种用SQL备份表的近似宇宙方法,而不需要自定义SQL查询和复杂的递归数据复制。
要使用SELECT INTO子句备份一个已存在的表,我们可以运行如下查询:
SELECT *
到backup_table
从original_table
条件;
我们可以指定以下内容:
- “backup_table”作为我们希望备份数据的表的名称。
- “original_table”指定我们希望备份的数据的名称。
- “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工具和查询来备份表。最好确保每个数据库引擎都提供特定的工具来备份数据。