sql | sqldev | data dump in csv, json, xml ... insert script?

sqldeveloper only

·

1 min read

this is oracle sqldeveloper only, sorry if that breaks your heart like mine

in sqldeveloper, execute the following query

SET SQLFORMAT <format>
/*<format>:= CSV | INSERT | JSON | XML | HTML | ANSICONSOLE | LOADER | FIXED | DEFAULT
*/

example to get as csv:

SET SQLFORMAT CSV

 SELECT TABLE_NAME, DATA_LENGTH, LAST_ANALYZED
   FROM ALL_TAB_COLS
  FETCH FIRST 1 ROWS ONLY;

/* script output
"TABLE_NAME","DATA_LENGTH","LAST_ANALYZED"
"ACCESS$",22,19-SEP-21
*/

or JSON?

SET SQLFORMAT JSON

 SELECT TABLE_NAME, DATA_LENGTH, LAST_ANALYZED
   FROM ALL_TAB_COLS
  FETCH FIRST 1 ROWS ONLY;
/*
{"results":[{"columns":[{"name":"TABLE_NAME","type":"VARCHAR2"},{"name":"DATA_LENGTH","type":"NUMBER"},{"name":"LAST_ANALYZED","type":"DATE"}],"items":
[
{"table_name":"ACCESS$","data_length":22,"last_analyzed":"19-SEP-21"}
]}]}
*/

if the dataset is too big, just dump it to a file

execute this before running the SELECT statement to save the output to a FILE /tmp/insert_script.sql

SPOOL "/tmp/insert_script.sql" -- SPOOL <FILE_PATH>

and turn off spooling after the execution is complete

SPOOL OFF

to reset to default behavior:

SET SQLFORMAT DEFAULT  -- or simply SET SQLFORMAT