用c 代码实现mysql数据库备份_MySQL数据库导出(备份方法)

本文介绍了如何使用C语言的SELECT... INTO OUTFILE语句和mysqldump工具备份MySQL数据库。包括如何导出数据到文本文件、设置导出格式,以及如何在不同主机间复制数据库。
摘要由CSDN通过智能技术生成

导出表数据到一个文本文件的最简单方法是使用SELECT... INTO OUTFILE语句直接将导出查询结果导出到服务器主机上的文件。

使用SELECT... INTO OUTFILE语句导出数据

语句的语法结合了常规的SELECT INTO与OUTFILE filename 末尾。默认的输出格式与LOAD DATA是一样的,所以下面的语句导出 tutorials_tbl 表到C:tutorials.txt 并使用制表符分隔,换行结尾的文件:

mysql> SELECT * FROM tutorials_tbl

-> INTO OUTFILE 'C:tutorials.txt';

可以利用选项来说明如何引号和分隔列,更改记录输出格式。 使用CRLF为结束行导出tutorial_tbl 为CSV格式表格,使用以下语句:

mysql> SELECT * FROM passwd INTO OUTFILE 'C:tutorials.txt'

-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'

-> LINES TERMINATED BY 'rn';

SELECT... INTO OUTFILE具有以下属性:

输出的文件是直接由MySQL服务器创建的,因此,文件名应指明想要的文件名,它会被写到服务器主机上。还有就是语句类似于没有LOCAL版本的LOAD DATA的本地版本。

必须有MySQL的FILE权限来执行SELECT ... INTO语句。

输出文件必须还不存在。 这防止MySQL弄错文件很重要。

应该有服务器主机或某种方式来检索该主机上登录帐户的文件。否则,SELECT ... INTO OUTFILE可能没有任何值给出。

在UNIX下,文件创建所有人都是可读的,由MySQL服务器所拥有。这意味着,虽然能够读取该文件,可能无法将其删除。

导出表作为原始数据

mysqldump程序用于复制或备份表和数据库。它可以写入表输出作为一个原始数据文件,或为一组重新创建表中的INSERT语句的记录。

转储一个表作为一个数据文件,必须指定一个--tab 选项指定目录,让MySQL服务器写入文件。

例如,从数据库test中的tutorials_tbl表转储到一个文件在C:tmp目录,可使用这样的命令:

$ mysqldump -u root -p --no-create-info

--tab=c:tmp TEST tutorials_tbl

password ******

以SQL格式导出表内容或定义

以SQL格式的表导出到一个文件,使用这样的命令:

$ mysqldump -u root -p test tutorials_tbl > dump.txt

password ******

这将创建一个具有以下内容折文件,如下:

-- MySQL dump 8.53

--

-- Host: localhost Database: test

---------------------------------------------------------

-- Server version 5.5.58

--

-- Table structure for table `tutorials_tbl`

--

CREATE TABLE tutorials_tbl (

tutorial_id int(11) NOT NULL auto_increment,

tutorial_title varchar(100) NOT NULL default '',

tutorial_author varchar(40) NOT NULL default '',

submission_date date default NULL,

PRIMARY KEY (tutorial_id),

UNIQUE KEY AUTHOR_INDEX (tutorial_author)

) TYPE=MyISAM;

--

-- Dumping data for table `tutorials_tbl`

--

INSERT INTO tutorials_tbl

VALUES (1,'Learn PHP','John Poul','2012-01-04');

INSERT INTO tutorials_tbl

VALUES (2,'Learn MySQL','Abdul S','2015-05-14');

INSERT INTO tutorials_tbl

VALUES (3,'JAVA Tutorial','Sanjay','2014-05-10');

要转储多个表,所有数据库名称参数后跟它们的名字。要转储整个数据库,不需要在数据库之后命名(附加)任何表:

$ mysqldump -u root -p test > database_dump.txt

password ******

要备份所有可用的数据库在主机上,使用以下命令:

$ mysqldump -u root -p --all-databases > database_dump.txt

password ******

--all-databases选项可在MySQL 3.23.12之后的版本使用。

该方法可用于实现数据库的备份策略。

复制表或数据库到另一台主机

如果想从一个MySQL服务器复制表或数据库到另一台,使用mysqldump以及数据库名和表名。

在源主机上运行下面的命令。将转储完整的数据库到文件dump.txt:

$ mysqldump -u root -p database_name table_name > dump.txt

password *****

可以复制完整的数据库,而无需使用特定的表名,如上所述。

现在ftp dump.txt文件在另一台主机上,并使用下面的命令。运行此命令之前,请确保已创建数据库名称在目标服务器上。

$ mysql -u root -p database_name < dump.txt

password *****

另一种方式来实现这一点,无需使用一个中间文件是来发送,mysqldump输出直接通过网络到远程MySQL服务器。如果可以从源数据库所在的主机那里连接两个服务器,使用此命令(请确保两个服务器可以访问):

$ mysqldump -u root -p database_name

| mysql -h other-host.com database_name

命令 mysqldump的一半连接到本地服务器,并转储输出写入管道。另一半MySQL连接到 other-host.com 远程MySQL服务器。它读取管道输入并发送每条语句到other-host.com服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值