将数据集导出到csv文件

时间:2016-10-29 07:18:52

标签: mysql csv format export

此问题与导出csv文件的行更改有关。我有一个结果表,我想导出它保存为csv文件,但我不满意导出格式,尤其是换行:

原始表显示在mysql workbench data set in workbench

输出csv文件 output csv file 如您所见,每条记录在transfer_fee列之后更改一行,以下是我的导出代码

(select 'id','player_id','season','before_date','before_value','transfer_date',
'transfer_fee','after_date','after_value')
union
(select * 
from market_value_variation
into outfile 'E:/Equipment/PythonWorkSpace/MarketValue/sql/market_value_variation.csv'
fields terminated by ','
lines terminated by '\n');

如果我使用mysql workbench的导出函数和工作台btw的结果限制为1000,这个问题仍然存在。 我想知道如何才能得到一个结果,只需更改输出csv文件中的每条记录,如:

id,player_id,season,before_date,before_value,transfer_date,transfer_fee,after_date,after_value
1,192565,15/16,2015-07-01,3400000,2015-07-01,-,2015-07-01,3400000
2,139278,15/16,2015-07-01,150000,2015-07-01,-,2015-07-01,150000
3,153628,15/16,2015-07-01,128000,2015-07-01,-,2015-07-01,128000
4,143121,15/16,2015-07-01,425000,2015-07-01,-,2015-07-01,425000
5,165007,15/16,2015-07-01,10200000,2015-08-28,End of loan,2016-02-22,10200000
...

我已经尝试了\r\n但是这个问题仍然存在,并且在transfer_fee之后的每条记录在第一行末尾都有一个\时很奇怪,例如:

id,player_id,season,before_date,before_value,transfer_date,transfer_fee,after_date,after_value
1,192565,15/16,2015-07-01,3400000,2015-07-01,-\
,2015-07-01,3400000
2,139278,15/16,2015-07-01,150000,2015-07-01,-\
,2015-07-01,150000
3,153628,15/16,2015-07-01,128000,2015-07-01,-\
,2015-07-01,128000

通过以下任一代码检查transfer_fee的值:

select hex(transfer_fee) from market_value_variation;
在mysql workbench中的

Open Value in Editor,我发现transfer_fee的十六进制值为2D0D,而0D表示CR是回车符,然后我尝试了其他相同问题的stackoverflow上建议的几种方法,如:

update market_value_variation set transfer_fee=trim(trailing '\n' from transfer_fee);
update market_value_variation set transfer_fee=replace(transfer_fee,'\r\n','');
update market_value_variation set transfer_fee=replace(transfer_fee,'\n','');
update market_value_variation set transfer_fee=trim('\r\n' from transfer_fee);
update market_value_variation set transfer_fee=trim('\n' from transfer_fee);

但它们对我不起作用,问题仍然是:

2D0D

或以文字格式

2d0d

所以我想知道如何从CR删除0Dtransfer_fee

我使用mysql 5.7.11

在Windows 10操作系统上工作

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

最后,解决这个问题的直接方法是写

update market_value_variation 
set transfer_fee=replace(replace(transfer_fee,'\n',''),'\r','');

删除文本字段中的0d,它适用于最终导出csv文件。