oracle存储过程导入导出json文件

从安装oracle19c和sql developer开始,途中遇到几十个问题,研究了大半天,注意点:

  • exportjson将test1的数据以json格式导出,importjson导入
  • 注意filepath不是普通的变量,首先create or replace directory DIR_TEST as ‘d:\test’;将’d:\test’赋值给变量DIR_TEST ,再将DIR_TEST 的这个变量名的字符串当filepath使用。这里被坑了很久
  • DROP DIRECTORY DIR_TEST;把DIRECTORY DIR_TEST注销。注销后无法使用DIR_TEST
CREATE OR REPLACE PROCEDURE exportjson(filepath in varchar2,filename in varchar2)
IS
    v_file UTL_FILE.FILE_TYPE;
    v_data CLOB;
    cursor cursor_  is select JSON_OBJECT(*) from test1;
BEGIN
  v_file := UTL_FILE.FOPEN(filepath, filename, 'w');
  UTL_FILE.PUT(v_file, '[');
  OPEN cursor_;
  LOOP
    fetch cursor_ into v_data;
    EXIT WHEN cursor_%NOTFOUND;
    --dbms_output.put_line(v_data);
    UTL_FILE.PUT(v_file, v_data);
    UTL_FILE.PUT(v_file, ',');
  END LOOP;
  UTL_FILE.PUT(v_file, ']');
  CLOSE cursor_;
  UTL_FILE.FCLOSE(v_file);
END;
CREATE OR REPLACE PROCEDURE importjson(filepath in varchar2,filename in varchar2)
IS
BEGIN
  INSERT INTO test1 (id, name, age)
    SELECT id, name, age FROM 
      JSON_TABLE(BFILENAME(filepath, filename),     --'DIR_TEST','test1.json'
      --'[{"ID":"a","NAME":"aa","AGE":11},{"ID":"b","NAME":"bb","AGE":22},{"ID":"c","NAME":"cc","AGE":33},]', 
      '$[*]' COLUMNS (ID,NAME,AGE)     --distinguish the lower/upper case
    );
  COMMIT;
END;
create or replace directory DIR_TEST as 'd:\test';
execute exportjson('DIR_TEST','test1.json');
--execute importjson('DIR_TEST','test1.json');
DROP DIRECTORY DIR_TEST;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值