zoukankan      html  css  js  c++  java
  • Oracle数据库clob字段导出为sql insert插入语句

    oracle数据库的clob字段导出为sql insert插入语句可以分三种情况:1,clob没有换行符;2,clob有换行符但不以分号结尾;3,clob有换行符并且以分号结尾。


    1. clob没有换行符
      使用dbms_lob.substr(clobName) clobName查询并导出即可,导入的时候oracle会自动将字符串转换为clob类型。
      示例:select id,dbms_lob.substr(single_line) single_line from demo_table;
      然后使用Export query results功能导出为sql即可。

    2. clob有换行符但不以分号结尾
      使用q’<multi_lines>’转义符格式即可导入,常用转义字符有[],{},<>等,也可以用#@=|
      示例:insert into demo_table(id,multi_line) values(‘1’,q’<line-1
      line2
      line3>’)
      局限,查询结果并导出为sql,然后还需要对sql进行再次修改

    3. clob有换行符并且以分号结尾
      使用||chr(13)||chr(10)||’statement;’格式,由于有分号结尾所以q的方式会报错
      示例:insert into demo_table(id,js_statements) values(‘2’,’function match(list){‘
      ||chr(13)||chr(10)||’var result=’’hello’’;’
      ||chr(13)||chr(10)||’return result;’
      ||chr(13)||chr(10)||’}’)
      局限,查询结果并导出为sql,然后还需要对sql进行再次修改,代码如下:
      LineIterator lines=FileUtils.lineIterator(sql)
      String line=lines.nextLine();
      boolean ignore=StringUtils.isBlank(line);//js内的空行会导致报错,所以可忽略所有空行
      if(!ignore){
      if(line.indexOf(“prompt”)<2 || line.startsWith(“set”) || line.startsWith(“insert”){ //原样输出,结果sql需要set define off否则导入sql会提示输入变量值 }
      else if(line.startsWith(“values”){ if(!line.endsWith(“;”) line+=”’”; }  //不以分号结尾时表示有换行,行尾加上单引号
      else if(line.startsWith(“}‘,”)){ line=’||chr(13)||chr(10)||’’+line; }  //以}’,开头表示js内容结束
      else { line=’||chr(13)||chr(10)||’’+line+”’”; }  //js内容前后都用单引号
      }
      if(!ignore){ writer.writeln(line); } //写入sql文件,支持PL/SQL导入
  • 相关阅读:
    Python中常见的文件对象内建函数
    数字整除
    Bag标签之校验
    开源硬件交流@上海新车间
    POJ 题目2774 Long Long Message(后缀数组,求最长公共子串长度)
    Linux以下的两种文件锁
    敏捷自己主动化单元測试 (从前台 JavaScript 至后台 Java)
    浅谈关于collection接口及相关容器类(一)
    上传文件 | 下载文件
    几年前再用exjts4,如今extjs5发布了,技术更新快,每次给人惊喜
  • 原文地址:https://www.cnblogs.com/xingqi/p/10418267.html
Copyright © 2011-2022 走看看