postgresql 批量插入表

xxb16uws  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(121)

假设我有一个struct

pub struct Student {
    name: String,
    age: i32,
}

字符串
我有学生类型的列表&我想在单个查询中将其插入postgres表。
我正在跟踪这个(UNNEST()),它有用于基本类型列表的egs,但没有用于结构体的egs。
我的代码段

sqlx::query!(
    "INSERT INTO students(name, age) SELECT * FROM UNNEST($1::text[], $2::int8[])",
    &students[..]
)
    .execute(&pool)
    .await.unwrap();


我应该在上面的代码段中修改什么才能一次插入多行?

j0pj023g

j0pj023g1#

就像在你链接的文章中一样,你必须传递多个原语切片,而不是复杂对象的一个切片:

let (names, ages): (Vec<&String>, Vec<&i32>) =
    students.iter().map(|Student { name, age }| (name, age));
sqlx::query!(
    "INSERT INTO students(name, age) SELECT * FROM UNNEST($1::text[], $2::int8[])",
    &names[..],
    &ages[..]
)
.execute(&pool)
.await
.unwrap();

字符串

相关问题