Oracle数据库中包含CLOB字段表的导出和导入
1.表的导出和导入
因为oracle中存储大量数据的CLOB字段默认是不导出的,所以在导出时需要特别设置一下。
我使用DBVisualizer这个工具进行导出和导入。
软件版本:
DBVisualizer Pro 10.0.16
导出表
Connections ->(数据库名称)-> Schemas -> (用户名)-> Tables -> (表名)
鼠标右键-》Export Table ...
Settings选项设置
Output Format 选择 CSV
导出为SQL文件会有超过4000报错的情况,所以这里导出文件为CSV文件
Output Destination 选择 File 指定导出的文件路径
点击 Data Format Settings 按钮
Binary/BLOB 选择 Value
默认是不导出
CLOB 选择 Value
默认是不导出
Quote Text Value 选择 None
默认是双引号把值括起来,这样的在导入时会将双引号也导入,所以不对值加双引号
点击 Ok
点击 Export 导出完成,生成一个CSV文件
导入表
Connections ->(数据库名称)-> Schemas -> (用户名)-> Tables -> (表名)
鼠标右键-》Import Table Data...
Next -> Next
这里需要注意一下:这里可以修改数据格式,自动识别的时候可能会将Number类型的识别为Boolean类型,导致导入报错,如果报错,则查看这里是否和数据库中格式一致,如果不一致的则进行修改:
Data -> Grid -> 点击数据类型进行修改
Next -> Next -> Import 导入完毕,查看结果,如果有错误则进行排查
导出为SQL文件会有超过4000报错的情况,所以这里导出文件为CSV文件。
2.CLOB类型字段的插入SQL如何写?
oracle会把插入的字符串作为 “字符串类型”处理,由于oracle有最大字符串限制(不超过4000个字符),所以会报错。
使用PL/SQL进行插入,不需要进行字符串的分割
语法如下:
DECLARE 自定义名称 CLOB := '大于4000的数据'; BEGIN INSERT INTO 表名称(...,字段名称,...) VALUES(...,自定义名称,...); COMMIT; END;
例如:test表中的bigdata字段类型为CLOB,则插入语句
DECLARE bname CLOB := 'clobdata'; BEGIN INSERT INTO test(bigdata) VALUES(bname); COMMIT; END;