Пост 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();
}
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.
Если у вас есть какие-либо вопросы по Oracle NoSQL - задавайте в комментах, постараюсь ответить, либо пишите на oracle.nosql@gmail.com.
Комментариев нет:
Отправить комментарий