пятница, 1 июня 2012 г.


Пост 5. CRUD.CREATE. BULK INSERT.

Доброго времени суток!

Продолжаем наше знакомство с Oracle NoSQL Database. В предыдущей статье мы рассматривали операции создания записей в базе. А что на счет массовой загрузки? Строго говоря ее нет. Но очень хотелось бы иметь возможность загружать данные из фала (начальное формирование базы, миграция с другой платформы). Нет проблем! Давайте напишем свой метод с маджонгом и гейшами! 
Для начала надо договорить о формате входных данных. Пусть это будет, что то вроде:
major1/major2/-/minor1/minor2/: value

Единственное что стоит заметить (а вы надеюсь это уже заметили), тип value в данном примере только String. 
Для начала дополним класс ParseKey методом:
    
public static Value ParseValue(String keysString) {
        String data = keysString.substring(keysString.indexOf(":") + 1);
        Value myValue = Value.createValue(data.getBytes());
        return myValue;
    }

Отлично! Ну и дополняем класс CreateNoConnect методом згрузки из файла:


    public static void LoadFromCSV(String filepath, KVStore myStore)
            throws FileNotFoundException, IOException {
        List<String> majorPath = new ArrayList<>();
        List<String> minorPath = new ArrayList<>();
        FileReader fr = new FileReader(filepath);
        BufferedReader br = new BufferedReader(fr);
        String s;
        while ((s = br.readLine()) != null) {
            Key myKey = ParseKey.ParseKey(s);
            Value myValue = ParseKey.ParseValue(s);
            myStore.put(myKey, myValue);
            majorPath.removeAll(majorPath);
            minorPath.removeAll(minorPath);
        }
        fr.close();
    }

Осталось только сформировать файл входных данных и выполнить main:

    static String port = "5000";
    static String host = "localhost";
    static String store = "kvstore";

    public static void main(String[] args) throws FileNotFoundException, IOException, InterruptedException {

        OraStore orastore = new OraStore(store, host, port);
        KVStore myStore = orastore.getStore();
        simpleoperation.CreateNoConnect.LoadFromFile("C:\\temp\\1.csv", myStore);
        myStore.close();
 }

Если у вас есть какие-либо вопросы по Oracle NoSQL - задавайте в комментах, постараюсь ответить, либо пишите на oracle.nosql@gmail.com.

Комментариев нет:

Отправить комментарий