2014-12-30 3 views
0

매우 큰 .bson 파일이 있습니다. 자바를 사용하여 .bson 파일의 내용보기

는 이제 두 개의 질문이 있습니다 :

  1. 내가 그 파일의 내용을 볼 수있는 방법

    ? 내가 그 내용을 볼 수있는 방법

  2. 을 (사실 나는 그 파일의 구조를보고 싶어) (나는 "bsondump" 함께 할 수있는 알고 있지만,이 명령은 큰 데이터베이스 SPECIALY, 느린) 자바를 사용하여 파일을?

답변

2

쉽게/읽기 BSONDecoder 예와 같은 BasicBSONDecoder 또는 DefaultBSONDecoder을 사용하여 Java에 bson 파일을 구문 분석 할 수 있습니다. 이 클래스들은 mongo-java-driver에 포함되어 있습니다.

여기에 Java 구현의 간단한 예가 bsondump입니다.

import java.io.BufferedInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 

import org.bson.BSONDecoder; 
import org.bson.BSONObject; 
import org.bson.BasicBSONDecoder; 



public class BsonDump { 

    public void bsonDump(String filename) throws FileNotFoundException { 
     File file = new File(filename); 
     InputStream inputStream = new BufferedInputStream(new FileInputStream(file)); 

     BSONDecoder decoder = new BasicBSONDecoder(); 
     int count = 0; 
     try { 
      while (inputStream.available() > 0) { 

       BSONObject obj = decoder.readObject(inputStream); 
       if(obj == null){ 
        break; 
       } 
       System.out.println(obj); 
       count++; 

      } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } finally { 
      try { 
       inputStream.close(); 
      } catch (IOException e) { 
      } 
     } 
     System.err.println(String.format("%s objects read", count)); 
    } 

    public static void main(String args[]) throws Exception { 

     if (args.length < 1) { 
      //TODO usage 
      throw new IllegalArgumentException("Expected <bson filename> argument"); 
     } 
     String filename = args[0]; 
     BsonDump bsonDump = new BsonDump(); 
     bsonDump.bsonDump(filename); 

    } 

} 
+0

추가 정보를 제공해 주시면 감사하겠습니다. 또한 완전한 코드를 작성하면 감사합니다. – Masoud

+0

그 외에도 많은 것들이 없습니다. main() 메서드로 전체 소스를 추가하여 업데이트했습니다. – helmy

+0

좋은 대답 참 +1 +1 – Disposer

관련 문제