2020年9月4日 作者 zeroheart

mysql 导出csv的一些细节

mysql -u xxx -p -h xxx table -e

“set names gbk; select f_id,f_app_style_url,f_brand_name,f_category,f_category1,f_category2,f_category3,f_image_path,f_introduction,f_is_canvat,f_jd_price,f_market_price,f_naked_price,f_name,f_no_reason_to_return,f_p_name,f_page_num,f_param,f_pc_style_url,f_price,f_product_area,f_product_name,f_profit,f_profit_margin,f_sale_state,f_sale_unit,CONCAT(‘\”,f_sku) as f_sku,f_sku_image_paths,CONCAT(‘\”,f_spu_id) as f_spu_id,f_state,f_tax,f_tax_price,f_thwa,CONCAT(‘\”,f_upc) as f_upc,CONCAT(‘\”,f_upc69) as f_upc69,f_weight,f_category1name,f_category2name,f_category3name,f_category_name,f_sku_attribute_flag,f_sku_attribute_num,f_sku_pro1link_sku_ids,f_sku_pro1name,f_sku_pro1ohter_value,f_sku_pro1value,f_sku_pro2link_sku_ids,f_sku_pro2name,f_sku_pro2ohter_value,f_sku_pro2value,f_sku_pro3link_sku_ids,f_sku_pro3name,f_sku_pro3ohter_value,f_sku_pro3value,f_sku_pro4link_sku_ids,f_sku_pro4name,f_sku_pro4ohter_value,f_sku_pro4value,f_sku_pro5link_sku_ids,f_sku_pro5name,f_sku_pro5ohter_value,f_sku_pro5value,f_syn_product_sku_id,f_capacity,f_contract_sku_ext,f_isjdlogistics,f_is_self,f_nappintroduction,f_nintroduction,f_param_detail_json,f_param_json,f_wserve,f_wxintroduction,f_sku_pro1img,f_sku_pro2img,f_sku_pro3img,f_sku_pro4img,f_sku_pro5img,REPLACE(REPLACE(f_wareqd,CHAR(10),’ ‘),CHAR(13),’ ‘) as f_wareqd from t_vop_product_brief limit 100″

|sed -e “s/\t/,/g” -e “s/NULL/ /g” -e “s/\n/\r\n/g” >

/mnt/mntnas/dbbak/t_vop_product_brief_xxx.csv

上面命令可以分为4个部分
第一部分是mysql命令;
第二部分是指定导出的列,这里可以用*,但是*就不好单独处理每个列,有的列导出后会科学计数,有的会换行,需要处理;
第三部分是处理换行等字符;
第四部分就是导出位置;

还可以用下面的命令导出,但是这样子导出没有表头

SELECT * FROM t_vop_product_brief limit 100
INTO OUTFILE ‘/Users/zeroheart/Desktop/xxxx.csv’
FIELDS TERMINATED BY ‘,’
OPTIONALLY ENCLOSED BY ‘”‘
LINES TERMINATED BY ‘\n’;