昨天解析了dblp.xml,存入數據庫,生成了若干張臨時表。今天上午,對這些臨時表進行處理,然后存入實驗設計的表中。數據庫的數據量比較大,50多M,80多萬條記錄。因而執行sql時,就遇到了很多問題。
1、去除重復tuple
原始dblp.xml中,同一論文的存在幾個完全相同的,所以要對數據庫中的數據進行處理。網上搜到一段代碼:
1) 查詢某些屬性相同tuple的方法
select * from vitae a where (a.peopleId,a.seq) in? (select peopleId,seq from vitae group by peopleId,seq? having???? count(*) > 1)
mysql打開sql文件?2)刪除某些屬性相同tuple的方法
delete from vitae a where (a.peopleId,a.seq) in? (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
我先執行了1,是在一個有79,000條記錄的表上執行的。數分鐘后(10分鐘以上),結果順利出來。然后我在記錄數為212,273的表上執行2,很久之后還沒有出結果。于是我又執行了1),放在532,555條記錄的表上。這下情況不妙,電腦直接死機了,cpu100%瘋狂地運轉著。正常關機都不行,最后只好強行按下了關機鍵。
重啟后,我不死心,在532,555條記錄的表執行1。1.5小時過去了,還沒有結果出現。
看來下午要好好研究一下sql在mysql的執行效率了。
mysql啟動程序。2、select into
Mysql中不支持select into table的語法,但可以用以下2個語句替代。
1)create table table_new (select * from table_old);
2)insert into table_new(name,password...) select table_old.name, table_old.password ?from table_old where
table_old.name="ct";
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态