select into outfile导出数据sql语句

mysql管理数据当然可以很方便的导出数据,但是当数据量很大是,phpmyadmin很可能会发生执行超时,其实很容易用select into outfile解决!

SELECT...INTO OUTFILE语句的主要作用是让您可以非常快速地把一个表转储到服务器机器上。如果您想要在服务器主机之外的部分客户主机上创建结果文件,您不能使用SELECT...INTO OUTFILE。在这种情况下,您应该在客户主机上使用比如“mysql –e "SELECT ..." > file_name”的命令,来生成文件。

SELECT...INTO OUTFILE是LOAD DATA INFILE的补语;用于语句的exort_options部分的语法包括部分FIELDS和LINES子句,这些子句与LOAD DATA INFILE语句同时使用

如下:(将数据库wordpress中的wp_posts表导出到D盘)

 代码如下 复制代码

select * into outfile 'd:data.txt' from wp_posts

需要注意的是:使用select into outfile语句,必须要有执行权限,路径必须存在,否则使用当前数据库目录,

例2

 代码如下 复制代码

表结构及测试数据
CREATE TABLE `tab`(

  `id` INT(1) NOT NULL AUTO_INCREMENT PRIMARY KEY,

  `name` VARCHAR(10) NOT NULL,

  `add` VARCHAR(20) CHARACTER SET gbk NOT NULL

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

INSERT INTO `tab`(`name`,`add`) VALUES

('中文', '这列不会乱码'),

('汉字', '这列不会乱码');

 

SELECT * FROM `tab`;

 

+----+------+--------------+

| id | name | add          |

+----+------+--------------+

|  1 | 中文 | 这列不会乱码 |

|  2 | 汉字 | 这列不会乱码 |

+----+------+--------------+
 rows in set (0.00 sec)

代码

 代码如下 复制代码

在 INTO OUTFILE 中使用变量
SET @tmp_sql = CONCAT(
  "SELECT * INTO OUTFILE 'C:\\sql_", DATE_FORMAT(NOW(), '%Y%m%d%H%i%s'),
  ".txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY "'" LINES TERMINATED BY 'rn' FROM `tab`;");
PREPARE s1 FROM @tmp_sql;
EXECUTE s1;
DROP PREPARE s1;

上面的代码会在C盘下生成“sql_当前时间.txt”的文件,避免INTO OUTFILE文件已存在错误

注:直接在命令行中SELECT显示无乱码,但使用 INTO OUTFILE 导出后有乱码,此时必须修改显示乱码的列的字符集

时间: 2024-09-20 06:38:53

select into outfile导出数据sql语句的相关文章

mysql利用命令导出数据sql语句

命令行source 导入数据库:  代码如下 复制代码 1,将要导入的.sql文件移至bin文件下,这样的路径比较方便 2,同上面导出的第1步 3,进入MySQL:mysql -u 用户名 -p 如我输入的命令行:mysql -u root -p    (输入同样后会让你输入ySQL的密码) 4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为blog的目标数据库(mysql>create database blog;) 5,输入:mysql>use 目标数据库名

Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]_Mysql

一.导出数据. 先说明一下自己的环境:Mac OS X 10.8.3, MySQL Community Server 5.6.10, MySQL Workbench 5.2.47. 我想把本机数据库内的数据迁移到另一台机器上,于是使用Workbench中自带的import/export功能,其实就是调用mysqldump.不幸的是,出现了版本不一致的错误. 错误没治了,最终找到解决方案,可以指定mysql的mysqldump,路径为:/usr/local/mysql/bin/mysqldump,

Mysql中文乱码以及导出为sql语句和Excel问题解决

这几天基于Heritrix写了一个爬虫,用到mysql,在导入导出数据时,遇到一些乱码问题,好不容易解决了,记录一下,以备查看. 一.导出数据. 先说明一下自己的环境:Mac OS X 10.8.3, MySQL Community Server 5.6.10, MySQL Workbench 5.2.47. 我想把本机数据库内的数据迁移到另一台机器上,于是使用Workbench中自带的import/export功能,其实就是调用mysqldump.不幸的是,出现了版本不一致的错误. 错误没治了

删除重复数据sql语句

删除重复数据sql语句 方法一 假设有重复的字段为name,address,要求得到这两个字段唯一的结果集 select identity(int,1,1) as autoid, * into #tmp from tablename select min(autoid) as autoid into #tmp2 from #tmp group by name,autoid select * from #tmp where autoid in(select autoid from #tmp2) 方

数据存在就更新不存在就插入数据sql语句

数据存在就更新不存在就插入数据sql语句 /* 在mysql教程网站制作中我们会碰到为了节省一点点资源就要把数据库教程操作更简单化,如数据存在就更新不存在就插入数据sql语句,下面我们就会用到 insert  on duplicate key update来实例, 语法: insert [low_priority | delayed | high_priority] [ignore]        [into] tbl_name [(col_name,...)]        values ({

在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句写法_数据库其它

今天在写程序的时候,需要生成从开始id到结束id的sql语句.原来不需要这个功能现在就需要了. 在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句如何写? 如:在SQL SERVER中查询数据库中第10条至30条之间的数据SQL语句如何写? ------解决方案-------------------- select top 20 * from 表 where id in (select top 30 id from 表 order by id)order by id desc

帝国cms随机读取20条数据sql语句

自己经常使用sql语句,没有总结出一个系统的sql语句大全来.今天就顺带在发个随机读取20条数据sql语句,留着以后自己用.也让后来者可以一起分享分享. [ecmsinfo]"select * from [!db.pre!]ecms_news where (classid  between 1 and 10) order by rand()  LIMIT  20",20,36,0,24,2,0[/ecmsinfo]

mysql教程删除数据sql语句用法

  mysql教程删除数据sql语句用法 DELETE FROM 语句用于从数据库表中删除记录. 语法 DELETE FROM table_name WHERE column_name = some_value 注释:SQL 对大小写不敏感.DELETE FROM 与 delete from 等效. 为了让 PHP 执行上面的语句,我们必须使用 mysql_query( 函数.该函数用于向 SQL 连接发送查询和命令. 例子 稍早时,我们在本教程中创建了一个名为 "Person" 的表

存储过程执行select与insert同一个表sql语句

存储过程执行select与insert同一个表sql语句 public void onedb_twoconnect()         {             using (transactionscope scope = new transactionscope())             {                 mysql教程connection conn1 = new mysqlconnection("server=127.0.0.1;database=test;uid=