欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用SELECT... INTO OUTFILE语句导出MySQL数据的教程

程序员文章站 2024-02-27 17:12:15
表数据导出到一个文本文件最简单的方法是使用select... into outfile语句的查询结果直接导出到一个文件在服务器主机上。 导出数据的select...int...

表数据导出到一个文本文件最简单的方法是使用select... into outfile语句的查询结果直接导出到一个文件在服务器主机上。
导出数据的select...into outfile声明:

这句话的语法结合了常规的select into outfile文件名的末尾。默认的输出格式是相同的load data,所以下面的语句导出tutorials_tbl的表制表符分隔的,换行结尾的文件到/tmp/tutorials.txt:

mysql> select * from tutorials_tbl 
  -> into outfile '/tmp/tutorials.txt';

也可以更改输出格式,使用选项来指示如何引用和分隔列和记录。 crlf终止线要导出tutorial_tbl的csv格式的表格,使用这样的语句:

mysql> select * from passwd into outfile '/tmp/tutorials.txt'
  -> fields terminated by ',' enclosed by '"'
  -> lines terminated by '\r\n';

select ... into outfile具有以下属性:

  •     由mysql服务器直接创建输出文件,这样的文件名应指定您希望在服务器主机上的文件将被写入。没有本地版本的load data local版本的类似的语句。
  •     必须要有mysql的file权限才能执行的select... into语句。
  •     输出文件必须不存在。这可以防止mysql从会破坏文件可能重要。
  •     应该在服务器主机上或一些方法来检索文件从该主机的登录帐户。否则select... into outfile可能是没有价值的。
  •     在unix下,创造了世界可读的文件和所拥有的mysql服务器。这意味着虽然就可以读取该文件,但是不能够删除它。

作为原始数据的导出表:

使用mysqldump程序复制或备份表和数据库。它可以写表输出的原始数据文件或为一组的insert语句重新创建该表中的记录。
转储一个表,必须指定一个数据文件 - 选项卡上的选项,表示想要的mysql服务器写入文件所在的目录。


使用mysqldump程序复制或备份表和数据库。它可以写表输出的原始数据文件,或为一组的insert语句重新创建该表中的记录。
转储一个表,必须指定一个数据文件 - 选项卡上的选项,表示想要的mysql服务器写入文件所在的目录。

$ mysqldump -u root -p --no-create-info \
      --tab=/tmp tutorials tutorials_tbl
password ******

在sql格式导出表的内容或定义:

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

$ mysqldump -u root -p tutorials tutorials_tbl > dump.txt
password ******

这将创建文件的内容如下:

-- mysql dump 8.23
--
-- host: localhost  database: tutorials
---------------------------------------------------------
-- server version    3.23.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=innodb;

--
-- dumping data for table `tutorials_tbl`
--

insert into tutorials_tbl 
    values (1,'learn php','john poul','2007-05-24');
insert into tutorials_tbl 
    values (2,'learn mysql','abdul s','2007-05-24');
insert into tutorials_tbl 
    values (3,'java tutorial','sanjay','2007-05-06');

要转储多个表,他们的名字所有的数据库名称参数。要转储整个数据库,不指定任何表后的数据库,如下所示:

$ mysqldump -u root -p tutorials > database_dump.txt
password ******

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

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

在sql格式导出表的内容或定义:

这些方法可用于实现数据库的备份策略。
表或数据库复制到另一台主机:

如果要复制的表或数据库从一个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服务器。如果可以连接到两台服务器的cookbook 数据库所在的主机上,使用以下命令:

$ mysqldump -u root -p database_name \
      states | mysql -h other-host.com database_name

命令mysqldump的一半连接到本地服务器,并写入转储输出管道。 mysql的一半的命令连接到远程mysql服务器otherhost.com。它读取输入管和其他host.com服务器发送的每个语句。