iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle的创建文件
  • 169
分享到

Oracle的创建文件

Oracle的创建文件 2021-05-23 15:05:31 169人浏览 才女
摘要

创建目录(需要在服务器上创建对应的目录) create or replace directory testdir as "/u01/software/test"; 2.给用户授权(这里可能会有问题,找不到xxx用户,需要创建用户

Oracle的创建文件

创建目录(需要在服务器上创建对应的目录)
create or replace directory testdir as "/u01/software/test";
2.给用户授权(这里可能会有问题,找不到xxx用户,需要创建用户)
grant read,write on directory testdir to xxx;
3.写入文件脚本

declare
  filehandle utl_file.file_type; --句柄
begin
  filehandle := utl_file.fopen("TESTDIR", "hello.txt", "w"); --打开文件
  utl_file.put_line(filehandle, "Hello World!");
  utl_file.fclose(filehandle); --关闭句柄
end;

暂存另一份脚本

create or replace procedure get_test_blob(i_id varchar2) is
  l_file     utl_file.file_type;
  l_filename varchar2(300);
  v_modules varchar2(3000);
  v_classes varchar2(3000);
  v_proc    varchar2(3000);
  v_sysdate varchar2(3000);
  v_count   number;
begin
  l_filename := to_char(sysdate, "yyyymmdd") || i_id ||".sh";
  l_file     := utl_file.fopen("TESTDIR", l_filename, "w");
  dbms_output.put_line("===OPEN OK===" || l_filename);
  dbms_output.put_line("#!/bin/sh");
  utl_file.put_line(l_file, "#!/bin/sh"); --写入文件

  v_sysdate := to_char(sysdate, "yyyymmdd") || i_id;
  v_modules := "/u01/srm/prod/" || v_sysdate || "/webapp/webRoot/";
  v_classes := "/u01/srm/prod/" || v_sysdate ||
               "/webapp/webRoot/WEB-INF/classes/";
  v_proc    := "/u01/srm/prod/" || v_sysdate || "/jobRunner/";

  dbms_output.put_line("mkdir -p /u01/srm/prod/" || v_sysdate ||
                       "/webapp/webRoot/modules");
  dbms_output.put_line("mkdir -p /u01/srm/prod/" || v_sysdate ||
                       "/webapp/webRoot/WEB-INF/classes");

  utl_file.put_line(l_file,
                    "mkdir -p /u01/srm/prod/" || v_sysdate ||
                    "/webapp/webRoot/modules");
  utl_file.put_line(l_file,
                    "mkdir -p /u01/srm/prod/" || v_sysdate ||
                    "/webapp/webRoot/WEB-INF/classes");
  select count(*) into v_count from h3c_test_pro_proc;
  if v_count > 0 then
    dbms_output.put_line("mkdir -p /u01/srm/prod/" || v_sysdate ||
                         "/jobRunner");
    utl_file.put_line(l_file,
                      "mkdir -p /u01/srm/prod/" || v_sysdate ||
                      "/jobRunner");
  end if;

  dbms_output.put_line("#screen");
  utl_file.put_line(l_file, "#screen");
  for rec in (select distinct trim(h.screen_path) screen_path
                from h3c_test_pro_screen h) loop
    --复制某个目录下的文件
    if rec.screen_path like "%.screen" or rec.screen_path like "%.svc" then
      dbms_output.put_line("mkdir -p " || v_modules ||
                           substr(rec.screen_path,
                                  1,
                                  instr(rec.screen_path,
                                        "/",
                                        1,
                                        length(rec.screen_path) -
                                        length(replace(rec.screen_path,
                                                       "/",
                                                       "")))));
    
      dbms_output.put_line("cp -rn /u01/srm/WEBapp/webRoot/" ||
                           rec.screen_path || " " || v_modules ||
                           rec.screen_path);
    
      utl_file.put_line(l_file,
                        "mkdir -p " || v_modules ||
                        substr(rec.screen_path,
                               1,
                               instr(rec.screen_path,
                                     "/",
                                     1,
                                     length(rec.screen_path) -
                                     length(replace(rec.screen_path, "/", "")))));
      utl_file.put_line(l_file,
                        "cp -rn /u01/srm/webapp/webRoot/" ||
                        rec.screen_path || " " || v_modules ||
                        rec.screen_path);
      --复制文件夹
    else
      dbms_output.put_line("mkdir -p " || v_modules || rec.screen_path);
      dbms_output.put_line("cp -rn /u01/srm/webapp/webRoot/" ||
                           rec.screen_path || " " || v_modules ||
                           substr(rec.screen_path,
                                  1,
                                  instr(rec.screen_path,
                                        "/",
                                        1,
                                        length(rec.screen_path) -
                                        length(replace(rec.screen_path,
                                                       "/",
                                                       "")) - 1)));
      utl_file.put_line(l_file,
                        "mkdir -p " || v_modules || rec.screen_path);
      utl_file.put_line(l_file,
                        "cp -rn /u01/srm/webapp/webRoot/" ||
                        rec.screen_path || " " || v_modules ||
                        substr(rec.screen_path,
                               1,
                               instr(rec.screen_path,
                                     "/",
                                     1,
                                     length(rec.screen_path) -
                                     length(replace(rec.screen_path, "/", "")) - 1)));
    end if;
  end loop;
  dbms_output.put_line("#bm");
  utl_file.put_line(l_file, "#bm");
  for rec in (select distinct trim(h.bm_path) bm_path from h3c_test_pro_bm h) loop
    if rec.bm_path like "%.bm" then
      dbms_output.put_line("mkdir -p " || v_classes ||
                           replace(substr(rec.bm_path,
                                          1,
                                          instr(replace(rec.bm_path,
                                                        ".bm",
                                                        ""),
                                                ".",
                                                -1) - 1),
                                   ".",
                                   "/"));
      dbms_output.put_line("cp -rn /u01/srm/webapp/webRoot/WEB-INF/classes/" ||
                           replace(replace(rec.bm_path, ".bm", ""),
                                   ".",
                                   "/") || ".bm" || " " || v_classes ||
                           replace(replace(rec.bm_path, ".bm", ""),
                                   ".",
                                   "/") || ".bm");
      utl_file.put_line(l_file,
                        "mkdir -p " || v_classes ||
                        replace(substr(rec.bm_path,
                                       1,
                                       instr(replace(rec.bm_path, ".bm", ""),
                                             ".",
                                             -1) - 1),
                                ".",
                                "/"));
      utl_file.put_line(l_file,
                        "cp -rn /u01/srm/webapp/webRoot/WEB-INF/classes/" ||
                        replace(replace(rec.bm_path, ".bm", ""), ".", "/") ||
                        ".bm" || " " || v_classes ||
                        replace(replace(rec.bm_path, ".bm", ""), ".", "/") ||
                        ".bm");
    
    else
      dbms_output.put_line("mkdir -p " || v_classes ||
                           replace(rec.bm_path, ".", "/"));
      dbms_output.put_line("cp -rn /u01/srm/webapp/webRoot/WEB-INF/classes/" ||
                           replace(rec.bm_path, ".", "/") || " " ||
                           v_classes ||
                           substr(rec.bm_path,
                                  1,
                                  instr(rec.bm_path, ".", 1) - 1));
      utl_file.put_line(l_file,
                        "mkdir -p " || v_classes ||
                        replace(rec.bm_path, ".", "/"));
      utl_file.put_line(l_file,
                        "cp -rn /u01/srm/webapp/webRoot/WEB-INF/classes/" ||
                        replace(rec.bm_path, ".", "/") || " " || v_classes ||
                        substr(rec.bm_path,
                               1,
                               instr(rec.bm_path, ".", 1) - 1));
    end if;
  end loop;
  dbms_output.put_line("#proc");
  utl_file.put_line(l_file, "#proc");
  for rec in (select distinct trim(h.bm_path) proc_path
                from h3c_test_pro_proc h) loop
    if rec.proc_path like "%.bm" or rec.proc_path like "%.proc" then
      dbms_output.put_line("mkdir -p " || v_proc ||
                           substr(rec.proc_path,
                                  1,
                                  instr(rec.proc_path,
                                        "/",
                                        1,
                                        length(rec.proc_path) -
                                        length(replace(rec.proc_path,
                                                       "/",
                                                       "")))));
    
      dbms_output.put_line("cp -rn /u01/srm/jobRunner/" || rec.proc_path || " " ||
                           v_proc || rec.proc_path);
      utl_file.put_line(l_file,
                        "mkdir -p " || v_proc ||
                        substr(rec.proc_path,
                               1,
                               instr(rec.proc_path,
                                     "/",
                                     1,
                                     length(rec.proc_path) -
                                     length(replace(rec.proc_path, "/", "")))));
      utl_file.put_line(l_file,
                        "cp -rn /u01/srm/jobRunner/" || rec.proc_path || " " ||
                        v_proc || rec.proc_path);
    end if;
  end loop;

  dbms_output.put_line("===EXPORT OK===");

  utl_file.fclose(l_file);

exception
  when utl_file.invalid_path then
    --无效的路径
    dbms_output.put_line("===INVALID_PATH===" || i_id);
    raise;
  when utl_file.invalid_mode then
    --无效的打开模式
    dbms_output.put_line("===INVALID_MODE===" || i_id);
    raise;
  when utl_file.invalid_operation then
    --无效的操作,文件打开错误会报这个异常,一般来说都是超长或打开方式byte型和非byte型
    dbms_output.put_line("===INVALID_OPERATION===" || i_id);
    raise;
  when utl_file.invalid_maxlinesize then
    --无效的最大长度,varchar2最大4000,raw最大32676,超过回报这个异常,所以一般要进行循环操作
    dbms_output.put_line("===INVALID_MAXLINESIZE===" || i_id);
    raise;
  when utl_file.access_denied then
    --拒绝进入指定路径,可能是授权问题
    dbms_output.put_line("===ACCESS_DENIED===" || i_id);
    raise;
  when utl_file.invalid_filehandle then
    --文件处理错误,不常见
    dbms_output.put_line("===INVALID_FILEHANDLE===" || i_id);
    raise;
  when utl_file.write_error then
    --写入错误,处理该异常最好的方式是将要写入的文件简单化,然后找准错误原因
    dbms_output.put_line("===WRITE_ERROR===" || i_id);
    raise;
  when no_data_found then
    --select时候未找到数据,不是utl_file的异常
    dbms_output.put_line("===NO_DATA_FOUND===" || i_id);
    utl_file.fclose(l_file);
    raise;
  when others then
    if utl_file.is_open(l_file) then
      utl_file.fclose(l_file);
      raise;
    end if;
  
end get_test_blob;
您可能感兴趣的文档:

--结束END--

本文标题: Oracle的创建文件

本文链接: https://www.lsjlt.com/news/8413.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么查询当前用户所有的表
    要查询当前用户拥有的所有表,可以使用以下 sql 命令:select * from user_tables; 如何查询当前用户拥有的所有表 要查询当前用户拥有的所有表,可以使...
    99+
    2024-05-14
    oracle
  • oracle怎么备份表中数据
    oracle 表数据备份的方法包括:导出数据 (exp):将表数据导出到外部文件。导入数据 (imp):将导出文件中的数据导入表中。用户管理的备份 (umr):允许用户控制备份和恢复过程...
    99+
    2024-05-14
    oracle
  • oracle怎么做到数据实时备份
    oracle 实时备份通过持续保持数据库和事务日志的副本来实现数据保护,提供快速恢复。实现机制主要包括归档重做日志和 asm 卷管理系统。它最小化数据丢失、加快恢复时间、消除手动备份任务...
    99+
    2024-05-14
    oracle 数据丢失
  • oracle怎么查询所有的表空间
    要查询 oracle 中的所有表空间,可以使用 sql 语句 "select tablespace_name from dba_tablespaces",其中 dba_tabl...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限设置
    答案:要创建 oracle 新用户,请执行以下步骤:以具有 create user 权限的用户身份登录;在 sql*plus 窗口中输入 create user identified ...
    99+
    2024-05-14
    oracle
  • oracle怎么建立新用户
    在 oracle 数据库中创建用户的方法:使用 sql*plus 连接数据库;使用 create user 语法创建新用户;根据用户需要授予权限;注销并重新登录以使更改生效。 如何在 ...
    99+
    2024-05-14
    oracle
  • oracle怎么创建新用户并赋予权限密码
    本教程详细介绍了如何使用 oracle 创建一个新用户并授予其权限:创建新用户并设置密码。授予对特定表的读写权限。授予创建序列的权限。根据需要授予其他权限。 如何使用 Oracle 创...
    99+
    2024-05-14
    oracle
  • oracle怎么查询时间段内的数据记录表
    在 oracle 数据库中查询指定时间段内的数据记录表,可以使用 between 操作符,用于比较日期或时间的范围。语法:select * from table_name wh...
    99+
    2024-05-14
    oracle
  • oracle怎么查看表的分区
    问题:如何查看 oracle 表的分区?步骤:查询数据字典视图 all_tab_partitions,指定表名。结果显示分区名称、上边界值和下边界值。 如何查看 Oracle 表的分区...
    99+
    2024-05-14
    oracle
  • oracle怎么导入dump文件
    要导入 dump 文件,请先停止 oracle 服务,然后使用 impdp 命令。步骤包括:停止 oracle 数据库服务。导航到 oracle 数据泵工具目录。使用 impdp 命令导...
    99+
    2024-05-14
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作