java 板


LINE

※ 引述《penguin0322 (陸哥1/17記得共同101考本)》之銘言: : 現在由於學校要用到 : 需要把一些很大的生物資料放進MySQL的資料庫中 : 而這也是我第一次用跟學java和MySQL 冏rz.. : >JCVI_SCAF_1101669000001 /length=1071 /full_length=1071 : /assembly=JCVI_ASM_feb03_2005_GS-02 : ATTCTTATTTATGATCTAGATGTGCATCAAGGTGATGGTACTGCGAAAATTTTTGAAAATAATGATCAGGTGTATACTTT : ............(中間省略) : GGATCCAGCATCAAACACTCTAGGCTGGAGATGGGTGGCAGGTCTTCATACCAAGGGGAAGCATTATCTAGCTTCCGAAT : GGATATAATAAATCTCCGCTAAAAGTATGAG : 我原本的想法是MySQL load data的時候是用\n\t來分隔資料 : 而我的資料不是格式都相同 : 所以原本打算用java來做資料的轉換 : JCVI_SCAF_1101669000000 length=840 full_length=840 assembly=JCVI_ASM_feb03_2005_GS-02 : AATACACCTTATGCAGATATCGCTTCTTCTAATTTTGCAAACAAAAGATTGAGTTCGTTTTATTTAGGCGGGATTA... : 這樣資料就都是變成以tab和換行來表示了 MySQL也就可以作輸入的動作了 : 但是 以上都是我用一個小數據測試的結果 : 當我要實作時 我的資料是4.5GB...冏rz : 跑了三四個小時 最後出現 : java.lang.OutOfMemoryError 冏.. 可以簡單的跟您提一下, 通常要用java 對這種很大的檔案做存取, 一般是以二元碼串流進行讀入及輸出.. 簡單範例 : 若您要從檔案讀取, 再寫入檔案--- public static void main(String[] arg0) { File fromFile = new File("c:\\source.txt"); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fromFile)); BufferedOutputStream bos = new BufferedOutputStream ( new FileOutputStream("c:\\to.txt")); byte[] buffer = new byte[4096]; int n = -1; while((n=bis.read(buffer))!=-1) { bos.write(buffer, 0, n); } bos.flush(); bis.close(); bos.close(); } byte陣列 buffer 的大小可以自己調. 那是串流緩衝區塊的大小. 如果是資料庫 您可能就要把它存到 Clob或Blob欄位了. 但各家的資料庫對這兩種資料型態有不一樣的實作...... Mysql的話, 我記得 Clob或Blob 有限制 32mb還是64mb. 但後來的版本好像有做比較大的資料型態. 這一方面您可能要去看一下Mysql的文件. 資料太大存不進資料庫會跟其 欄位的資料型態或資料表本身的資料限制有點關係. 如果是要用java存進資料庫. 您可以看一下 java.sql 底下的PreparedStatement的用 法. 您可能會發現, 其實最直覺的應該是要把資料 存成 java的Blob或 Clob的物件. 再把它寫到資料庫. 但是 java卻沒有提供直接建立 Blob及Clob物件的方法. 反而是要從資料庫去讀取, 才有辦法取得這兩個的物件. 唯一比較快,而且比較正確的做法也是使用二位元串流存取.. 你會發現PreparedStatement類別中有一個 setBinaryStream 這個方法可以用. 其中第三個參數, 你可以用InputStream的available來取得... 希望對您有幫助. --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.124.20







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP