Создать таблицу весной 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

Другие вопросы по тегам