sql 示例,这是一个查询订单导出到/tmp/order.csv文件的sql语句

select * into outfile '/tmp/order.csv' fields terminated by ',' lines terminated by '\n' from(
select '订单号', '用户', '总计', '小计','运费','优惠','使用积分','商家实收','收件人','类型','运单号','状态','创建日期','收件人地址','商品' ,'规格' ,'数量','单价','商品小计'  union 
select 
concat('\t',convert(db_orders.code using gbk)) as '订单号', 
convert(db_user.name using gbk) as '用户' ,
convert(db_orders.grand_total using gbk)as '总计' , 
convert(db_orders.subtotal using gbk) as '小计' ,
convert(db_orders.freight_price using gbk) as '运费' , 
convert(db_orders.shop_coupon_saving using gbk) as '优惠' ,
convert(db_orders.integral using gbk) as '使用积分',
convert(db_orders.shop_grand_total using gbk) as '商家实收',
convert(CONCAT_WS('|',db_orders.take_name ,db_orders.take_telephone) using gbk) as '收件人' ,  
convert(case  db_orders.peisong   
	when  1 then '物流配送'  
	when 2 then '同城自提'  
	end  using gbk) as '类型',
convert(db_orders.tracking_code using gbk) as '运单号',   
if(db_orders.closed=1,convert('已关闭' using gbk),convert(case  db_orders.status  
	when 0 then '待付款' 
	when 1 then '待发货' 
	when 2 then '已发货' 
	when 3 then '已完成'
	when 8 then '已收货' 
	end using gbk) ) as '状态',
convert(db_orders.create_date using gbk) as '创建日期',
convert(CONCAT_WS('|',CONCAT_WS('|',db_orders.take_area_msg,  REPLACE(db_orders.take_address,CHAR(10),'')) ,db_orders.take_post_code) using gbk) as '收件人地址' ,
convert(db_goods.title using gbk) as '商品', convert(db_goods_format.title using gbk) as '规格' ,
convert(db_orders_item.item_number using gbk) as '数量',
convert( db_orders_item.item_price  using gbk )as '单价',
convert( db_orders_item.item_subtotal using gbk)as '商品小计' 
from
db_orders join db_orders_item on db_orders.id= db_orders_item.orders_id 
join  db_goods on db_orders_item.goods_id = db_goods.id  
join  db_goods_format on db_orders_item.format_id = db_goods_format.id 
join db_user on db_orders.user_id =db_user.id 
where  db_orders.display =1 and db_orders.user_display =1) b;

将查询的结果导出到/tmp/order.csv 文件中,字段以','结尾,行以'\n'换行结尾。

select * into outfile '/tmp/order.csv' fields terminated by ',' lines terminated by '\n' from

获取到列名,select 所有列名 union上真实的查询结果

select '订单号', '用户', '总计', '小计','运费','优惠','使用积分','商家实收','收件人','类型','运单号','状态','创建日期','收件人地址','商品' ,'规格' ,'数量','单价','商品小计'  union 

查看需要导出的表编码格式

show create table  ***

CONVERT()函数可以用来获取一个类型的值,并产生另一个类型的值,数据库中是使用的utf8,sql 中使用gbk来重新获取对应的值。

convert(db_user.name using gbk) as '用户' 

查询结果字段拼接,将take_name和take_telephone两个字段使用 '|'拼接起来

CONCAT_WS('|',db_orders.take_name ,db_orders.take_telephone)

case 判断 ,根据字段对应的不同值,展示不同的信息。

case  db_orders.status  
	when 0 then '待付款' 
	when 1 then '待发货' 
	when 2 then '已发货' 
	when 3 then '已完成'
	when 8 then '已收货' 
end

if判断,当closed是1的时候,状态显示 已关闭,不是1的时候根据status的值显示状态信息。

if(db_orders.closed=1,
    convert('已关闭' using gbk),
    convert(
	    case  db_orders.status  
	        when 0 then '待付款' 
	        when 1 then '待发货' 
	        when 2 then '已发货' 
	        when 3 then '已完成'
	        when 8 then '已收货' 
	    end using gbk) 
    ) as '状态',

替换值中的"\n" 换行符,在take_address 中发现换行符,使用REPLACE函数替换。

REPLACE(db_orders.take_address,CHAR(10),'')) 

其他字符参考  ASCII控制字符

二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义
0000 0000 0 00 NUL 空字符(Null)
0000 0001 1 01 SOH 标题开始
0000 0010 2 02 STX 本文开始
0000 0011 3 03 ETX 本文结束
0000 0100 4 04 EOT 传输结束
0000 0101 5 05 ENQ 请求
0000 0110 6 06 ACK 确认回应
0000 0111 7 07 BEL 响铃
0000 1000 8 08 BS 退格
0000 1001 9 09 HT 水平定位符号
0000 1010 10 0A LF 换行键
0000 1011 11 0B VT 垂直定位符号
0000 1100 12 0C FF 换页键
0000 1101 13 0D CR 归位键
0000 1110 14 0E SO 取消变换(Shift out)
0000 1111 15 0F SI 启用变换(Shift in)
0001 0000 16 10 DLE 跳出数据通讯
0001 0001 17 11 DC1 设备控制一(XON 启用软件速度控制)
0001 0010 18 12 DC2 设备控制二
0001 0011 19 13 DC3 设备控制三(XOFF 停用软件速度控制)
0001 0100 20 14 DC4 设备控制四
0001 0101 21 15 NAK 确认失败回应
0001 0110 22 16 SYN 同步用暂停
0001 0111 23 17 ETB 区块传输结束
0001 1000 24 18 CAN 取消
0001 1001 25 19 EM 连接介质中断
0001 1010 26 1A SUB 替换
0001 1011 27 1B ESC 跳出
0001 1100 28 1C FS 文件分割符
0001 1101 29 1D GS 组群分隔符
0001 1110 30 1E RS 记录分隔符
0001 1111 31 1F US 单元分隔符
0111 1111 127 7F DEL 删除

查询结果存入csv文件 如下图

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐