В небольших проектах на Java часто возникает желание упаковать всё в один исполняемый файл, эдакий uber-jar, чтобы можно было легко и быстро развернуть код на любой машине. А плюшки серьезно развивающегося Spring Boot только этому способствуют.
Практически обязательный вопрос, который появится при создании проекта - какую базу данных (встроенную, естественно) использовать? Одним из удобных вариантов является ObjectDB - объектно-ориентированная база данных, реализующая стандарт JPA (Java Persistence API) http://www.objectdb.com На сайте есть достаточно подробные инструкции по установке и использованию.
Однако, как быстро перенести табличные данные из имеющегося CSV или DSV файла?
Здесь может помочь небольшая CLI-программа, позволяющая записать информацию в файл ODB из исходного CSV/DSV или принимая данные со стандартного ввода.
Для начала, создайте проект в вашей IDE и скопируйте в него entity-класс или классы (название не только класса, но и пакета должно совпадать с целевым проектом).
Затем создайте два класса - Serializer и ODBCreate (исходный код доступен на https://github.com/bord81/Usefull-stuff/tree/File-or-console-input/ObjectDB/table-qcreate).
В классе Serializer нужно указать имя промежуточного файла для entity-класса:
private static final String targetFile = "your_entity.ser";
И его название:
SomeEntityClass someEntityClass = new SomeEntityClass();
После этого можно запустить ODBCreate.java и выбрать Serialize new class - 's'.
Зачем это нужно? На следующем этапе, программа прочитает сериализованный entity-класс, используя рефлексию получит структуру его полей и создаст или обновит соответствующую таблицу в файле ObjectDB.
Для этого в классе ODBCreate нужно прописать следующее:
Имя odb-файла
private static final String oDBfile = "filename.odb";
Файл-источник (CSV/DSV)
private static final String dbSource = "filename.dsv";
Символ-разделитель полей
private static final String dbSeparator = ";"
В зависимости от типа данных (Integer или Long), возможно прийдется поменять метод в первом блоке кода - Integer.parseInt или Long.parseLong.
Далее программа запускается снова и данные переносятся непосредственно в базу, и, если их больше чем пару строк, то усилия на создание этого промежуточного проекта себя более чем оправдывают. Также возможен последовательный ввод данных с клавиатуры (для теста например).
Для начала, создайте проект в вашей IDE и скопируйте в него entity-класс или классы (название не только класса, но и пакета должно совпадать с целевым проектом).
Затем создайте два класса - Serializer и ODBCreate (исходный код доступен на https://github.com/bord81/Usefull-stuff/tree/File-or-console-input/ObjectDB/table-qcreate).
В классе Serializer нужно указать имя промежуточного файла для entity-класса:
private static final String targetFile = "your_entity.ser";
И его название:
SomeEntityClass someEntityClass = new SomeEntityClass();
После этого можно запустить ODBCreate.java и выбрать Serialize new class - 's'.
Зачем это нужно? На следующем этапе, программа прочитает сериализованный entity-класс, используя рефлексию получит структуру его полей и создаст или обновит соответствующую таблицу в файле ObjectDB.
Для этого в классе ODBCreate нужно прописать следующее:
Имя odb-файла
private static final String oDBfile = "filename.odb";
Файл-источник (CSV/DSV)
private static final String dbSource = "filename.dsv";
Символ-разделитель полей
private static final String dbSeparator = ";"
В зависимости от типа данных (Integer или Long), возможно прийдется поменять метод в первом блоке кода - Integer.parseInt или Long.parseLong.
Далее программа запускается снова и данные переносятся непосредственно в базу, и, если их больше чем пару строк, то усилия на создание этого промежуточного проекта себя более чем оправдывают. Также возможен последовательный ввод данных с клавиатуры (для теста например).
Что это было? :)))
ОтветитьУдалитьЗаметка по программированию))
УдалитьОх, а я уж думал, что тебя взломали :)
УдалитьЕщё рано))
Удалить