sql >> Database >  >> RDS >> PostgreSQL

XML invoegen uit bestand in PostgreSQL

Handig, ik heb zojuist een voorbeeld geschreven van hoe je dit kunt doen met platte tekstbestanden die even goed van toepassing zijn op xml bestanden. Zie de vraag tabelrijen bijwerken op basis van txt-bestand .

Het blijkt dat je dit kunt doen met 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

Als je veel van dit doet, wil je misschien drive psql een co-proces gebruiken of in ieder geval om SQL te genereren en het in psql te pipen 's stdin, dus u hoeft niet steeds opnieuw verbinding te maken/af te breken.

Of doe het met de 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__

Het genereren van willekeurige scheidingstekens is bedoeld om te beschermen tegen (onwaarschijnlijke) injectieaanvallen die afhankelijk zijn van het kennen of raden van de scheidingstag die de dollar aangeeft.

Je wordt veel gezonder en gelukkiger als je een goede scripttaal en PostgreSQL-clientbibliotheek zoals Perl met DBI gebruikt en DBD::Pg , Python met psycopg2 of Ruby met de Pg juweeltje voor elk niet-triviaal werk. Aanzienlijk werken met databases in de shell leidt tot pijn, lijden en overmatig gebruik van co-processen.




  1. Variabelen in opgeslagen procedure MySQL

  2. commit na selectie

  3. Hulpprogramma voor clusterverificatie dat een groot aantal xml-bestanden genereert op het bestandssysteem "/u01".

  4. Maak een enkele tabel in mysql alleen-lezen