clob没有换行符
使用dbms_lob.substr(clobName) clobName查询并导出便可,导入的时候oracle会自动将字符串转换为clob类型。
示例:select id,dbms_lob.substr(single_line) single_line from demo_table;
而后使用Export query results功能导出为sql便可。
clob有换行符但不以分号结尾
使用q’’转义符格式便可导入,经常使用转义字符有[],{},<>等,也能够用#@=|
示例:insert into demo_table(id,multi_line) values(‘1’,q’
line2
line3>’)
局限,查询结果并导出为sql,而后还须要对sql进行再次修改
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导入