MySQL通过自增一列在Select ... into outfile...里面实现CSV导出带字段的效果

CSV的样例中Select ... into outfile...是不带字段名的,只导出数据,所以需要自己想另外的办法实现,这里有一个笨招,自己构造一个字段列,示例如下:

1,创建测试表数据
CREATE TABLE test.c SELECT 1 AS pid,1 AS item,15.0 AS wgt UNION ALL
SELECT 1 AS pid,2 AS item,20.0 AS wgt UNION ALL
SELECT 1 AS pid,3 AS item,30.0 AS wgt UNION ALL
SELECT 1 AS pid,4 AS item,29.0 AS wgt;
SELECT * FROM test.c;

mysql> SELECT * FROM test.c;
+-----+------+------+
| pid | item | wgt  |
+-----+------+------+
|   1 |    1 | 15.0 | 
|   1 |    2 | 20.0 | 
|   1 |    3 | 30.0 | 
|   1 |    4 | 29.0 | 
+-----+------+------+
4 ROWS IN SET (0.00 sec)

2,通过union all实现字段列,并且排在第一行

SELECT * FROM (
SELECT ‘pid‘ AS pid,‘item‘ AS item,‘wgt‘ AS wgt
UNION ALL
SELECT * FROM test.c
)a INTO OUTFILE ‘/tmp/c.csv‘ 
 FIELDS TERMINATED BY ‘,‘ 
 OPTIONALLY ENCLOSED BY ‘"‘
  LINES TERMINATED BY ‘\n‘;

执行如下:
mysql> SELECT * FROM (
    -> SELECT ‘pid‘ AS pid,‘item‘ AS item,‘wgt‘ AS wgt
    -> UNION ALL
    -> SELECT * FROM test.c
    -> )a INTO OUTFILE ‘/tmp/c.csv‘ 
    ->  FIELDS TERMINATED BY ‘,‘ 
    ->  OPTIONALLY ENCLOSED BY ‘"‘
    ->   LINES TERMINATED BY ‘\n‘;
Query OK, 5 rows affected (0.00 sec)

3,去打开c.csv文件查看效果

时间: 2024-07-31 08:09:32

MySQL通过自增一列在Select ... into outfile...里面实现CSV导出带字段的效果的相关文章

mysql load data infile的使用 和 SELECT into outfile备份数据库数据

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char' ] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string

MySQL无法使用select into outfile

错误提示: mysql> select * into outfile '/tmp/mysql-slow.csv' from mysql.slow_log; ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement mysql>

逻辑备份,mysqldump,SELECT…INTO OUTFILE,恢复

逻辑备份 mysqldump mysqldump备份工具最初由Igor Romanenko编写完成,通常用来完成转存(dump)数据库的备份以及不同数据库之间的移植,例如从低版本的MySQL数据库升级到高版本的MySQL数据库,或者从MySQL数据库移植到Oracle和SQL Server等数据库等. mysqldump的语法如下: mysqldump [arguments] > file_name 如果想要备份所有的数据库,可以使用--all-databaes选项: mysqldump --a

怎么重置mysql的自增列AUTO_INCREMENT初时值

重置 MySQL 自增列 AUTO_INCREMENT 初时值 注意, 使用以下任意方法都会将现有数据删除. 方法一: delete from tb1; ALTER TABLE tbl AUTO_INCREMENT = 100; 1 2 (好处, 可以设置 AUTO_INCREMENT 为任意值开始) 提示:如果表列和数据很多, 速度会很慢, 如90多万条, 会在10分钟以上. 方法二: truncate tb1; 1 (好处, 简单, AUTO_INCREMENT 值重新开始计数.) 怎么重置

Mysql中自增字段(AUTO_INCREMENT)的一些常识

Mysql中自增字段(AUTO_INCREMENT)的一些常识 在系统开发过程中,我们经常要用到唯一编号.使用过mysql的人都应该知道,mysql有一个定义列为自增的属性:AUTO_INCREMENT. 指定了AUTO_INCREMENT的列必须要建索引,不然会报错,索引可以为主键索引,当然也可以为非主键索引.(不一定要做主键) 1 2 3 mysql> create table t4 (id int auto_increment); ERROR 1075 (42000): Incorrect

mysql 数据库自增id 的总结

有一个表StuInfo,里面只有两列 StuID,StuName其中StuID是int型,主键,自增列.现在我要插入数据,让他自动的向上增长,insert into StuInfo(StuID,StuName) values(????) 如何写? INSERT INTO StuInfo(StuID,StuName) VALUES (NULL, `字符`)或者INSERT INTO StuInfo(StuName) VALUES (`字符`) INSERT和REPLACE语句的功能都是向表中插入新

【Mysql】Java中对Mysql数据库的增删改查、Java的System类

这部分也是所谓JDBC.网站数据源的内容,把名字弄得很高深似得,实际上只是Java中对Mysql数据库的增删改查的内容.非常简单,之前写了这么多Mysql的内容,没好好总结一下,实在是不应该.今天就实现一个Java中对Mysql数据库的增删改查,随便带点Java取出当前系统的系统名与系统时间的知识,完成一个还算有点意思的小例子. 一.基本目标 首先,在Mysql数据库中有一张名为testtable的空表,id为自增列,username,class都是文本列,但是class里面都存放数字,也就是整

MYSQL的自增ID

当你插入A表一条数据,插入B表的数据时需要添加对应A表中对应字段的自增值,你会怎么获取到A表的自增值呢?那下面来介绍你可能不知道MySQL里的自增值. MYSQL获取自增ID的四种方法 1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函数 LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变. 在多用户交替插入数据的情况下max(id)显然不能用.这时就

MySQL数据类型/属性/增删改查(14)

MySQL数据类型 日期类型 ·date date数据类型负责存储日期信息(1000-01-01到9999-12-31)可以使用数字和字符串插入(20180809或"2018-08-09")非数字或字母使用分隔符 ·datetime datetime数据类型负责存储日期和时间信息的组合(1000-01-01 00:00:00到9999-12-31 23:59:59)可以使用数字和字符串插入(20180809122556或"2018-08-09 12:25:56")