powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Liquibase
25 сообщений из 27, страница 1 из 2
Liquibase
    #40085316
Всем привет.

Допустим есть база в PostgreSql с таблицами, полями, связями и т.д.

Я изначально не знаю об структуре этой базы. Т.е. я не знаю какие там таблицы, какие поля у таблиц.

Возможно ли получить эти метаданные с помощью Liquibase?
Запустилось приложение и данные о структуре (таблицы, поля) записались в .xml формат.


P.S. Я получил метаданные с помощью jdbcTemplate - сделал запросы к текущей схеме базы и просто поместил их в List.
...
Рейтинг: 0 / 0
Liquibase
    #40085321
Вот дока How to set up Liquibase with an Existing Project , среди прочего там упоминается generateChangeLog command .
...
Рейтинг: 0 / 0
Liquibase
    #40085551
Stanislav Bashkyrtsev,

Это через xml, а можно ли через Java?

С Liquibase в основном работают только через xml или yaml, json. Вручную создают файлы с конфигурацией базы.

С Java не одного примера нет в инете.
...
Рейтинг: 0 / 0
Liquibase
    #40085617
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да неужели?

P.S.
Статьи не читал и даже не смотрел.
...
Рейтинг: 0 / 0
Liquibase
    #40085622
Basil A. Sidorov,

Это не то, что мне нужно. Этого как раз навалом в инете.
Дело всё в том, что я не знаю структуры базы данных.

У меня есть только Javadoc

P.S.
Прежде, чем обвинять разберись с вопросом.
...
Рейтинг: 0 / 0
Liquibase
    #40085630
Максим Сысоев, я не понимаю что ты хочешь. Сначала ты сказал что тебе нужно получить XML:
Максим СысоевЗапустилось приложение и данные о структуре (таблицы, поля) записались в .xml формат.А потом что тебе не нравится XML:
Максим СысоевЭто через xml, а можно ли через Java?Хотя я последнее предложение все равно не понял, что такое "через XML"... Мы "получили XML", а не сделали что-то "через XML". Если ты хочешь этот XML сгенерировать через Java код а не через cmd утилиту , то найди исходники этой утилиты и посмотри как это все работает. Это все Java.
...
Рейтинг: 0 / 0
Liquibase
    #40085653
Stanislav Bashkyrtsev,

Задача такая: Сделать Backup базы данных.

Я не буду грузить, объяснять надо капитально что именно надо использовать.
Я думал, что если есть возможность, то выгрузить всю структуру базы в changelog.xml файл, далее выполнить команду liquibase.update("changelog.xml") - которая обновит другую базу. Короче ладно, поразбираюсь самостоятельно.

Спасибо за помощь.
...
Рейтинг: 0 / 0
Liquibase
    #40085661
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Сысоев,
Бэкап бд?
Не понял.
Есть же утилиты от субд. Они делают бэкап в виде текста команд SQL.
?
...
Рейтинг: 0 / 0
Liquibase
    #40085675
PetroNotC Sharp,

Есть утилиты, да. В том же Postgres имеется.

Просто база на heroku и нужен сервис, который делает бэкап.

т.е. Пишем название старой схемы, название новой схемы и делается бэкап из старой в новую.
...
Рейтинг: 0 / 0
Liquibase
    #40085681
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
	DatabaseConnection connection = new JdbcConnection(jdbcTemplate.getDataSource().getConnection());
		Database sourceDatabase = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection);
		sourceDatabase.setDefaultSchemaName("public");
		Database targetDatabase = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection);
		targetDatabase.setDefaultSchemaName("newchema");

		CompareControl.SchemaComparison schemaComparison = new CompareControl.SchemaComparison(new CatalogAndSchema(null, "public"),
				new CatalogAndSchema(null, "newchema"));

		Set<Class<? extends DatabaseObject>> types = new HashSet<>();
		types.add(Table.class);
		types.add(Column.class);
		types.add(Index.class);

		CompareControl compareControl = new CompareControl(
				new CompareControl.SchemaComparison[] { schemaComparison }, types);

		DiffResult diffResult = DiffGeneratorFactory.getInstance().compare(sourceDatabase,
				targetDatabase, compareControl);



в diffResult содержится структура старой б.д.
Осталось только как то эту структуру в новую б.д. закинуть.
...
Рейтинг: 0 / 0
Liquibase
    #40085682
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Сысоев,

Ну не знаю. И чего вы выиграли с этим heroku против как пример моего хостинга со всем своим.
...
Рейтинг: 0 / 0
Liquibase
    #40085683
PetroNotC Sharp,

это не я хостинг выбирал. У меня задание такое есть, вот приходится как то разбираться
...
Рейтинг: 0 / 0
Liquibase
    #40085684
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Сысоев,
Ну я думал может вы знаете) Удачи!
...
Рейтинг: 0 / 0
Liquibase
    #40085685
PetroNotC Sharp,

Спасибо, она мне пригодится.
...
Рейтинг: 0 / 0
Liquibase
    #40085695
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Сысоев
Всем привет.

Допустим есть база в PostgreSql с таблицами, полями, связями и т.д.

Я изначально не знаю об структуре этой базы. Т.е. я не знаю какие там таблицы, какие поля у таблиц.

Возможно ли получить эти метаданные с помощью Liquibase?
Запустилось приложение и данные о структуре (таблицы, поля) записались в .xml формат.


P.S. Я получил метаданные с помощью jdbcTemplate - сделал запросы к текущей схеме базы и просто поместил их в List.


Вот к этому доступ есть?
Если да, то там вся схема БД.
...
Рейтинг: 0 / 0
Liquibase
    #40085699
mad_nazgul,

Да, с помощью этих данных можно получить структуру базы.
Там в приницпе через JdbcTemplate можно делать запросы и в списке получать структуры таблиц.
Но она не подойдёт, т.к. много кода будет - так мне сказали.
Делай через проверенные решения, например Liquibase.
...
Рейтинг: 0 / 0
Liquibase
    #40085753
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Сысоев
mad_nazgul,

Да, с помощью этих данных можно получить структуру базы.
Там в приницпе через JdbcTemplate можно делать запросы и в списке получать структуры таблиц.
Но она не подойдёт, т.к. много кода будет - так мне сказали.
Делай через проверенные решения, например Liquibase.


Тогда вам сюда .
Надо смотреть CLI интерфейс.
...
Рейтинг: 0 / 0
Liquibase
    #40085778
mad_nazgul,

Побывал уже там. Там нет документации на Java кстати.

Всё, что есть (по крайней мере что я найти смог) это Javadoc
...
Рейтинг: 0 / 0
Liquibase
    #40085781
Вообщем кое что сделано, но тут проблема в том, что у меня вставка таблицы осуществляется в туже самую схему. Т.е происходит ошибка - таблица уже существует. Вообщем я не могу изменить название схемы у changeSet для новой структуры.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
	@Scheduled(cron = "00 00 18 * * *")
	public void start() throws LiquibaseException, SQLException {

		DatabaseConnection connection = new JdbcConnection(jdbcTemplate.getDataSource().getConnection());
		Database sourceDatabase = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection);
		sourceDatabase.setDefaultSchemaName("public");
		Database targetDatabase = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection);
		targetDatabase.setDefaultSchemaName("newschema");

		CompareControl.SchemaComparison schemaComparison = new CompareControl.SchemaComparison(new CatalogAndSchema(null, "public"),
				new CatalogAndSchema(null, "newschema"));

		Set<Class<? extends DatabaseObject>> types = new HashSet<>();
		types.add(Table.class);
		types.add(Column.class);
		types.add(Index.class);

		CompareControl compareControl = new CompareControl(
				new CompareControl.SchemaComparison[] { schemaComparison }, types);

		DiffResult diffResult = DiffGeneratorFactory.getInstance().compare(sourceDatabase,
				targetDatabase, compareControl);

		DiffToChangeLog diffToChangeLog = new DiffToChangeLog(diffResult, new DiffOutputControl());
		List<ChangeSet> list = diffToChangeLog.generateChangeSets();


		DatabaseChangeLog databaseChangeLog = new DatabaseChangeLog();

// Здесь идёт перенос старой структуры в новую базу
		for (ChangeSet changeSet : list) {
			changeSet.execute(databaseChangeLog, targetDatabase);
		}

	}
...
Рейтинг: 0 / 0
Liquibase
    #40085861
O_79_O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Максим Сысоев
PetroNotC Sharp,

Есть утилиты, да. В том же Postgres имеется.

Просто база на heroku и нужен сервис, который делает бэкап.

т.е. Пишем название старой схемы, название новой схемы и делается бэкап из старой в новую.

Товарисчь сысоив,бекап в херку делается средствами хероку без каких либо проблем,но это тариф не бесплатен

вы или ваши заказчики выбрали бомж тариф ,в котором нет бекапа и теперь хотите поиметь его нахаляву- если это ваши заказчики - бегите - тариф с бекапом стоит не больше пару чашек кофе в месяц и даже если вы выполните задание - то вам в лучшем случае не заплатят,а в худшем еще и побьют)
если это ваш работадатель- мне вас искренне жаль,так как оценивают вас в пару чашек кофе в месяц
в любом случае это повод задуматься - правильной ли дорогой вы идете- хотя судя по всему - проблемы на генетическом уровне )
вы уверены что вам нужно в программирование вообще?)может стоит начать с покраски паребриков?
...
Рейтинг: 0 / 0
Liquibase
    #40085866
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
O_79_O,

Ты выпил что ли?
...
Рейтинг: 0 / 0
Liquibase
    #40085868
O_79_O,

Меня нормально оценивают.
В любом случае, реализовано уже.
Всем спасибо
...
Рейтинг: 0 / 0
Liquibase
    #40085897
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Сысоев
mad_nazgul,

Побывал уже там. Там нет документации на Java кстати.

Всё, что есть (по крайней мере что я найти смог) это Javadoc


Я не говорил про Java, я говорил про CLI-интерфейс. ;-)
С ним в начале разберитесь.
А документации по работе с Liquibase на Java очень много.
В основном используется для актуализации БД с моделью приложения.
Хотя мне лично больше нравиться Flyway, но это дело вкуса.
...
Рейтинг: 0 / 0
Liquibase
    #40086168
mad_nazgul,

авторА документации по работе с Liquibase на Java очень много.


Ссылку можно? если знаете нормальную, в качестве примера.
...
Рейтинг: 0 / 0
Liquibase
    #40086287
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Сысоев
mad_nazgul,

авторА документации по работе с Liquibase на Java очень много.


Ссылку можно? если знаете нормальную, в качестве примера.

Например
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Liquibase
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]