pub fn insert<T: Serialize>(
table: &str,
columns: &[&str],
rows: &[T],
) -> Result<Statement>Expand description
INSERT INTO table (columns) SELECT ... FROM json_each(?1): every row in one statement.
§Errors
Error::Internal when a name is not a plain SQL identifier, columns
is empty, or a row does not serialize to a JSON object.
§Examples
use ocre::{bulk, serde_json::json};
let rows = [json!({"title": "A", "plays": 1}), json!({"title": "B", "plays": 2})];
let insert = bulk::insert("tracks", &["title", "plays"], &rows).unwrap();
assert_eq!(
insert.sql,
"INSERT INTO tracks (title, plays) SELECT value ->> '$.title', value ->> '$.plays' FROM json_each(?1)"
);
assert_eq!(insert.params.len(), 1);