Создать таблицу весной r2dbc
У меня есть пружинное соединение r2dbc для базы данных postgresql и я хотел бы создать таблицу,
фактически эквивалент SQL
CREATE TABLE IF NOT EXISTS name (id, bigint);
Как я могу сделать это, так как DatabaseClient поддерживает только выбор / вставка?
2 ответа
Как сказал Томас Андольф в комментарии
.execute().sql()
действительно правильный подход
в моем случае мне нужно было на неопределенный срок заблокировать результат, прежде чем продолжить, поэтому мне нужно было добавить .fetch().all().collectList().block();
Вам не нужно использовать DatabaseClient для создания ваших таблиц. Поэтому, когда я столкнулся с той же проблемой, что и вы, я сделал что-то вроде следующего кода:
fun postgresProcess(config: PostgresConfig): PostgresProcess {
val runtime = PostgresStarter.getDefaultInstance()
val exec = runtime.prepare(config)
val postgres = exec.start()
// connecting to a running Postgres and feeding up the database
val conn = DriverManager.getConnection("jdbc:postgresql://$host:$port/$database", username, password)
conn.createStatement().execute("CREATE TABLE customer ( id SERIAL PRIMARY KEY, firstname VARCHAR(100) NOT NULL, lastname VARCHAR(100) NOT NULL);")
return postgres
}
В начале вы можете сделать что-то подобное, а после вы можете использовать клиент базы данных.
Я помню, как пробовал пролететь без успеха. Я хотел бы использовать DatabaseClient. Больше кода на моем репозитории GitHub