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;

 

posted on 2020-09-15 11:36  欢跳的心  阅读(13998)  评论(0编辑  收藏  举报