Oracle数据库导出的方式比较多,也各有优缺点,比较好的方案是使用r_man,但是显得大材小用,一般人也搞不定。
我们这边数据量比较小,一般现场人员使用两种方式都出数据,发回研发中心进行分析数据。
- 导出为Excel。
- 导出为SQL脚本。
但是这两种方式各有优缺点,Excel表在数据量比较小的情况下查看比较方便,但是倒回数据库比较麻烦。而使用SQL脚本,查看比较麻烦,但是导入到数据库中比较方便;
一般我们建议现场的人员。导出SQL脚本给我们。
但是最近遇到了SQL脚本执行不了的情况,具体原因是现场使用了clob类型,数据库里可以存储很多字符串,我们倒回数据库的时候出现了问题。
如SQL语句为
insert into article (content) values('4000多个字符');
在执行的时候,Oracle认为单引号里的数据都是字符串varchar2类型,而varchar2类型是不能超过4000个字符的,这时候执行就会报错
具体可以参考https://stackoverflow.com/questions/13945710/error-ora-01704-string-literal-too-long
查问题花了不少时间,具体就不再详细说了
现在直接说解决方法
以后叫现场导出数据的时候,统一使用exp命令,研发使用imp命令
这样效率高,而且不会出错
导出来的数据是以二进制的方式存在的,无法直接查看
导出命令
exp system/manager@TestDB file=E:\sampleDB.dmp full=y
导入命令
imp system/manager@TEST file=E:\sampleDB.dmp full=y ignore=y
具体参数的含义自行查一下
另外提一下,目前MYSQL数据库没有遇到这种问题