Próbuję zrobić wstawkę do kolumny json w bazie danych PostgreSQL przy użyciu clojure.java.jdbc/insert!
. Nie jestem pewien, który format danych powinien być używany podczas wstawiania json.Wstawianie danych do kolumn json w postgresql przy użyciu clojure.java.jdbc
definicja Tabela:
CREATE TABLE errors (
id character varying(24) NOT NULL PRIMARY KEY,
body json NOT NULL
);
Próbując wykorzystać dane dosłowne w formacie mapy:
=> (insert! db :errors {:id "a" :body {:message "A error"}}
{:id "b" :body {:message "B error"}})
PSQLException No hstore extension installed. org.postgresql.jdbc2.AbstractJdbc2Statement.setMap (AbstractJdbc2Statement.java:1709)
Alternatywnie jako json zakodowany ciąg:
=> (insert! db :errors {:id "a" :body "{\"message\":\"A error\"}"}
{:id "b" :body "{\"message\":\"B error\"}"})
PSQLException ERROR: column "body" is of type json but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
Position: 46 org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse (QueryExecutorImpl.java:2198)
Tam nie wydają być oczywistym sposobem na zrobienie tego. Szczególnie ważne jest to, że muszę mieć możliwość wstawiania wielu rekordów w pojedynczym zapytaniu zamiast jednego po drugim, co zapewnia mi wygoda insert!
.
Jaki jest prosty sposób wstawienia kilku rekordów do tabeli postgres posiadającej kolumnę json przy użyciu clojure.java.jdbc?
Link do "dokładnego wyjaśnienia tego procesu" jest martwy! Czy masz alternatywne źródło? – rdgd
@rdgd Zastąpiono go linkiem do archiwum internetowego. –