现在有5张表,总数据条数大约80W条,要存入一张表,求方法!

龙上 发布于 2012/09/14 18:00
阅读 534
收藏 1

5张表,A,B,C,D,E

结构都都差不多

id,name, xx_id;XX代表关联的表名称 例如A_ID.

现在要全部存入 category表

表结构如下:

id,name,parentid,path;

1,名称,上级ID(0),路径(0,1,)

求方法啊.刚刚用PHP写了个循环,速度相当慢啊

以下是问题补充:

@龙上:A表最顶级,E表是最后的。a表2个字段,id,name. B表到E表3个字段. B字段:id,name,a_id。 C字段:id,name,b_id. D字段:id,name,c_id. e字段:id,name,d_id (2012/09/14 21:08)
加载中
0
皮总
皮总
50W 啊, 我觉得应该很快啊。 我导 80 万也没超过 15 分钟啊
0
xinzaibing
xinzaibing

开32个线程并发写,每秒差不多3000条。800000/3000= 260秒左右

MYSQL数据库,我觉得其他数据库写入速度应该也差不多。

0
coda
coda

你是先select数据到应用服务器,然后写到数据库吗?

如果没有太多的处理逻辑的话,用下面的方式应该会快一点吧?
oracle  :  insert into category  select * from A;
my sql : select * into category from A;

如果还是慢,是不是category表上有触发器,或者有复杂的索引呢?

龙上
龙上
回复 @coda : A表最顶级,E表是最后的。a表2个字段,id,name. B表到E表3个字段. B字段:id,name,a_id。 C字段:id,name,b_id. D字段:id,name,c_id. e字段:id,name,d_id
coda
coda
回复 @龙上 : A,B,C,这几表张的id是什么类型的?比如是uuid还是数字,有可能重复吗? 另外,是oracle数据库还是my sql?
龙上
龙上
上面那个关联怎么搞啊?一级关联一级的
0
Eric贰
Eric贰
什么数据库?MYSQL?
0
黄龍
黄龍
这东西还要用PHP!?直接用数据库导啦!
0
d
dldn
如果不需要运算,直接数据库导入导出。如果需要运算,写个程序按导入格式生成一个临时文件,最后通过导入进数据库,库可以先不建索引,导入后再建索引。80w 通过文件导入,应该是秒级的时间。
0
龙上
龙上

注意这个啊。要有层级关系的。有关联的的,求SQL语句。

0
龙上
龙上
A表最顶级,E表是最后的。a表2个字段,id,name. B表到E表3个字段. B字段:id,name,a_id。 C字段:id,name,b_id. D字段:id,name,c_id. e字段:id,name,d_id
0
血战
血战
insert into category select id, name, '' , id from A; insert into category select b.id, b.name, b.a_id, category.path||','||b.id from B, category where b.a_id = category.id; insert into category select c.id, c.name, c.b_id, category.path||','||c.id from c, category where c.b_id = category.id; ....
血战
血战
你这个比较麻烦一点的就是Path吧,我的想法是,先插入A表,保证都是最顶级的,然后插入B表,根据B表的a_id字段关联categrory中取出之前A表的插入数据的path+B自己的id即可,C表,D表,E表也是类似思路
龙上
龙上
看不明白这个
0
龙上
龙上
求方法啊
返回顶部
顶部