sql >> Databáze >  >> RDS >> PostgreSQL

Vložte XML ze souboru v PostgreSQL

Prakticky jsem právě napsal příklad, jak to udělat se soubory ve formátu prostého textu, které lze stejně dobře aplikovat na xml soubory. Viz otázka aktualizace řádků tabulky na základě souboru txt .

Ukázalo se, že to můžete udělat pomocí 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

Pokud toho děláte hodně, možná budete chtít drive psql pomocí společného procesu nebo alespoň vygenerovat SQL a převést jej do psql 's stdin, takže nemusíte znovu a znovu nastavovat a rušit připojení.

Případně to udělat pomocí shellu:

#!/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__

Generování náhodného oddělovače má chránit před (nepravděpodobnými) útoky injekce, které se spoléhají na znalost nebo uhodnutí oddělovacího tagu s kotací dolaru.

Bude vás moc rozumnější a šťastnější, pokud používáte správný skriptovací jazyk a klientskou knihovnu PostgreSQL, jako je Perl s DBI a DBD::Pg , Python s psycopg2 nebo Ruby s Pg klenot pro jakoukoli netriviální práci. Významná práce s databázemi v shellu vede k bolesti, utrpení a nadměrnému používání společných procesů.




  1. Server WEBrick rails se nespustí

  2. Je jméno speciální klíčové slovo v PostgreSQL?

  3. SQL - Jak změnit pořadí výběrového dotazu, který používá omezení omezení

  4. Oracle SQL:výběr z tabulky s vnořenou tabulkou