Oracle
 sql >> база данни >  >> RDS >> Oracle

Експортирайте резултатите от заявката в XML файл, когато използвате SQLcl (Oracle)

Когато използвате SQLcl с Oracle Database, можете да експортирате резултатите от заявката си в XML файл с SPOOL команда.

Пример

Ето пример за демонстрация:

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

Ето какво направи, ред по ред:

  • Първият ред задава SQLFORMAT към xml . Това гарантира, че нашият резултат .xml файлът всъщност съдържа XML.
  • Вторият ред използва SPOOL команда, за да посочите къде ще бъде записан изходният файл. Не забравяйте да промените /Users/barney/data/regions.xml до местоположение във вашата система и подходящо име на файл.
  • На третия ред изпълних SQL заявката – резултатите, за които експортирам. В този случай експортирах целите regions маса.
  • След това обърнах SPOOL изключено.
  • Накрая зададох SQLFORMAT обратно към първоначалната ми настройка, която беше ansiconsole . Това е по избор – можете да го оставите на json ако предпочитате, или го променете с нещо друго.

Ето как изглежда полученият файл:

<?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. 

Премахване на обратна връзка

Можете да премахнете X rows selected с изключен 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;

Резултат:

<?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>

В този случай обърнах FEEDBACK отново след експортиране на файла.

Добавяне на резултатите

По подразбиране SPOOL използва REPLACE , който замества файла, ако вече съществува.

Въпреки това можем да използваме APPEND аргумент за добавяне на резултатите към файла.

Пример:

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;

Резултатен файл:

<?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>

Този пример добави резултатите към файла, който беше създаден (и попълнен) в предишния пример. Това доведе до дублиране на изхода на заявката във файла.

Презаписване на съществуващия файл

Можем да използваме REPLACE за да презапишете съществуващия файл с резултатите от нова заявка:

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;

Резултатен файл:

<?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>

Както бе споменато, REPLACE е настройката по подразбиране, така че бихме могли просто да пропуснем този аргумент напълно.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на FLASHBACK в Oracle

  2. Зареждане на данни за изображения в BLOB колони в Oracle

  3. Как да използвам параметри в клауза 'where value in...'?

  4. Имената на Oracle TNS не се показват при добавяне на нова връзка към SQL Developer

  5. Основна таблица за одит на тригерите на Oracle