西西河

主题:求助:如何将MySQL中超过200M行的数据 -- 龙驹坝

共:💬14 🌺10 新:
全看树展主题 · 分页
家园 求助:如何将MySQL中超过200M行的数据

输出成csv格式?

select * into outfile

只给了我50M左右的数据。

家园 自己写一个输出吧。

不清楚你的情况是什么。自己写一个程序吧。每次抽一部分数据。自己写文件,反正CSV格式就是文本文件。

或者干脆 select * from table where id<1000 into file1,

select * from table where id>=1000 and id<2000 into file2.

然后手工合并文件。

另外呢,mysql数据文件200M, 但是去掉控制字符,索引以后,可能真是数据只有50M。需要自己判断。

家园 试试mysqldump

外链出处

家园 SELECT * INTO OUTFILE

SELECT * INTO OUTFILE '/tmp/result.txt'

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

LINES TERMINATED BY '\n'

FROM test_table;

家园 最多只给了我50M行的数据

知不知道有没有参数可以调整以后输出几百个M的数据?

否则,我只能将数据拆分成50M以下的再输出。可是我的另一个程序需要全部的数据,只能在用别的工具把它们组合起来。头疼。

家园 不明白,不是把整张表格都输出了吗?
家园 最后的csv文件,

只有50M行。漏了很多。不知道为什么。

家园 越界?出错?,用一下Limit

1. 得到总行数

select count(*) from test_table

2. 依次分割输出

select * into outfile .....

from test_table

limit 50000000 # export first 50M line

...

limit 5000001,10000000 #export line 50M to 100 M

....

家园 差不多的方法

不过比你笨且慢就是。

但是为什么不给我报个错呢?浪费我好几天功夫。

家园 是不是和max_allowed_packet 有关系?

[mysqldump]

quick

max_allowed_packet=16M

家园 不像

我是本地机。没有远程连接。

客户用的是MySql,给了我们一个几个大数据文件,是MySqlDump出来的。我要把他们揉扒揉扒,再输出成CSV文件。 MySql不是很熟悉,这几天头大得很:一个错误,就是一两天的处理时间。

家园 看看是否是index有问题。修复一下试试
家园 怎么查?
家园 问题解决

数据中有些特殊字符,MySql能认,SAS和我的C程序都不能认,判断为了文件结束符。

解决办法:把这几行删掉。

全看树展主题 · 分页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河