PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Masukkan XML dari file di PostgreSQL

Dengan mudah saya baru saja menulis contoh bagaimana melakukan ini dengan file teks biasa yang akan berlaku sama baiknya untuk xml file. Lihat pertanyaan memperbarui baris tabel berdasarkan file txt .

Ternyata Anda dapat melakukan ini dengan psql :

regress=> CREATE TABLE xmldemo(id serial primary key, blah xml);
regress=> \set test = `cat some.xml`
regress=> INSERT INTO xmldemo(blah) VALUES (:'test');
INSERT 0 1

Jika Anda melakukan banyak hal, Anda mungkin ingin drive psql menggunakan proses bersama atau setidaknya untuk menghasilkan SQL dan menyalurkannya ke psql stdin, jadi Anda tidak perlu melakukan semua penyiapan/penghancuran koneksi itu berulang-ulang.

Bergantian, melakukannya dengan shell:

#!/bin/bash
xmlfilename=$1
sep=$(printf '%04x%04x\n' $RANDOM $RANDOM)
psql <<__END__
INSERT INTO mytable(myxmlcolumn) VALUES (
\$x${sep}\$$(cat ${xmlfilename})\$x${sep}\$
);
__END__

Pembuatan pemisah acak adalah untuk melindungi dari serangan injeksi (yang tidak mungkin) yang mengandalkan mengetahui atau menebak tag pemisah kutipan dolar.

Anda akan menjadi banyak lebih waras dan bahagia jika Anda menggunakan bahasa skrip yang tepat dan pustaka klien PostgreSQL seperti Perl dengan DBI dan DBD::Pg , Python dengan psycopg2 atau Ruby dengan Pg permata untuk pekerjaan non-sepele. Pekerjaan yang signifikan dengan database di shell menyebabkan rasa sakit, penderitaan, dan penggunaan proses bersama yang berlebihan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres psql tidak dikenali sebagai perintah internal atau eksternal

  2. Postgre SQL mengabaikan kondisi pemfilteran jika nilainya nol

  3. Tuple tidak dimasukkan secara berurutan dalam tabel database?

  4. Bagaimana cara mendapatkan Waktu Pembuatan Database di PostgreSQL 9.0?

  5. Bagaimana cara membuat database dengan flyway?