Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Eksportuj wyniki zapytania do pliku XML przy użyciu SQLcl (Oracle)

Używając SQLcl z bazą danych Oracle, możesz wyeksportować wyniki zapytania do pliku XML za pomocą SPOOL polecenie.

Przykład

Oto przykład do zademonstrowania:

SET SQLFORMAT xml;
SPOOL '/Users/barney/data/regions.xml';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole;

Oto, co zrobił, linia po linii:

  • Pierwszy wiersz ustawia SQLFORMAT do xml . Gwarantuje to, że nasz wynikowy plik .xml plik faktycznie zawiera XML.
  • Druga linia używa SPOOL polecenie, aby określić, gdzie zostanie zapisany plik wyjściowy. Pamiętaj, aby zmienić /Users/barney/data/regions.xml do lokalizacji w systemie i odpowiedniej nazwy pliku.
  • W trzecim wierszu uruchomiłem zapytanie SQL – wyniki, dla których eksportuję. W tym przypadku wyeksportowałem całe regions stół.
  • Następnie zmieniłem SPOOL wyłączony.
  • Na koniec ustawiłem SQLFORMAT z powrotem do mojego pierwotnego ustawienia, którym było ansiconsole . Jest to opcjonalne – możesz zostawić go w json jeśli wolisz, lub zmień to na coś innego.

Oto jak wygląda wynikowy plik:

<?xml version='1.0'  encoding='UTF-8' ?>
<RESULTS>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
	</ROW>
</RESULTS>
4 rows selected. 

Usuń opinię

Możesz usunąć X rows selected z SET FEEDBACK off :

SET SQLFORMAT xml;
SET FEEDBACK off;
SPOOL '/Users/barney/data/regions_feedback_off.xml';
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on;
SET SQLFORMAT ansiconsole;

Wynik:

<?xml version='1.0'  encoding='UTF-8' ?>
<RESULTS>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
	</ROW>
</RESULTS>

W tym przypadku włączyłem FEEDBACK ponownie po wyeksportowaniu pliku.

Dołącz wyniki

Domyślnie SPOOL używa REPLACE , który zastępuje plik, jeśli już istnieje.

Możemy jednak użyć APPEND argument, aby dołączyć wyniki do pliku.

Przykład:

SET SQLFORMAT xml;
SET FEEDBACK off;
SPOOL '/Users/barney/data/regions_feedback_off.xml' APPEND;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on;
SET SQLFORMAT ansiconsole;

Wynikowy plik:

<?xml version='1.0'  encoding='UTF-8' ?>
<RESULTS>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
	</ROW>
</RESULTS>
<?xml version='1.0'  encoding='UTF-8' ?>
<RESULTS>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
	</ROW>
</RESULTS>

Ten przykład dołączył wyniki do pliku, który został utworzony (i wypełniony) w poprzednim przykładzie. Spowodowało to zduplikowanie wyników zapytania w pliku.

Zastąp istniejący plik

Możemy użyć REPLACE aby nadpisać istniejący plik wynikami nowego zapytania:

SET SQLFORMAT xml;
SET FEEDBACK off;
SPOOL '/Users/barney/data/regions_feedback_off.xml' REPLACE;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on;
SET SQLFORMAT ansiconsole;

Wynikowy plik:

<?xml version='1.0'  encoding='UTF-8' ?>
<RESULTS>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[1]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Europe]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[2]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Americas]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[3]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Asia]]></COLUMN>
	</ROW>
	<ROW>
		<COLUMN NAME="REGION_ID"><![CDATA[4]]></COLUMN>
		<COLUMN NAME="REGION_NAME"><![CDATA[Middle East and Africa]]></COLUMN>
	</ROW>
</RESULTS>

Jak wspomniano, REPLACE jest ustawieniem domyślnym, więc mogliśmy po prostu całkowicie pominąć ten argument.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przykład Oracle Dynamic SQL do wstawiania rekordu przy użyciu DBMS_SQL

  2. Wskazówka Oracle WITH i MATERIALIZE działa jako autonomiczna transakcja dla funkcji

  3. jak zrobić funkcję, aby zwrócić typ wiersza z tabeli w pl/sql?

  4. Pierwsze kroki z Oracle Autonomous Database w chmurze

  5. Archiwizator zawieszony ze względu na KOMPATYBILNY ORA-16484