使用java查看.bson文件的内容

时间:2014-12-30 18:38:57

标签: java mongodb parsing bson

我有一个非常大的.bson文件。

现在我有两个问题:

  1. 如何查看该文件的内容? (我知道它可以用“bsondump”,但是这个命令很慢,特别适用于大型数据库)(事实上我想看到该文件的结构)

  2. 如何使用java查看该文件的内容?

1 个答案:

答案 0 :(得分:2)

您可以使用BSONDecoder实例(例如BasicBSONDecoderDefaultBSONDecoder)轻松地在Java中读取/解析bson文件。这些类包含在mongo-java-driver中。

以下是bsondump

的Java实现的简单示例
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);

    }

}