Oracle文本数据(csv、txt)导出方法总结

0    208    2

Tags:

👉 本文共约1651个字,系统预计阅读时间或需7分钟。

前 言

在日常维护工作中,经常会遇到客户要求将标的数据库导出为TXT、CSV等文件。

在数据量较少的情况下PL/SQL、toad、Navicat等工具都可以满足要求,速度快而且方便。

但这些工具并不适用于数据量大的情况,在数据量大的时候工具会卡死,在不同的数据库版本,有不同的解决方案。

导出方案

spool方式(通用)

对于数据量大的情况我们一般使用SPOOL方式进行导出:

sqluldr2

详细参考:https://www.xmmup.com/oraclewenbendaochugongjuzhisqluldr2.html

sqluldr2缺点:导出不能包含CLOB字段,否则会报错。

除此之外也可以使用sqluldr2,该工具可快速将数据导出为TXT、CSV格式,支持并行导出、多种分隔符、自动拆分文件、通配符。需要额外下载安装。

导出格式:

常用参数:

  • user = username/password@tnsname 用户名、密码;
  • query = select statement 选择语句(可直接写表名、查询运算语句、sql文本);
  • sql = SQL file name sql语句文件(sql语句复杂时写入文本,由query调用);
  • field = separator string between fields (分隔符,默认逗号分隔);
  • file = output file name (导出文件名);
  • log = log file name, prefix with + to append mode(日志文件);
  • charset = character set name of the target database(字符集);
  • size (最大输出文件大小mb,按大小拆分文件);
  • rows(按输出行数拆分文件)。

示 例:

导出dbauser.session_01表按100MB每个文件进行拆分。

使用spool导出和sqluldr2导出,生成的文件大小基本一致,但sqluldr2只用30秒,spool使用了2分31秒,sqluldr2效率是spool的5倍以上。

相比spool,sqluldr2在使用上更为便捷,功能也更为全面,效率也更高,因此在11g版本建议使用sqluldr2来导出TXT、CSV文件。

oracle版本为12.2以上

在oracle版本为12.2以上时,oracle提供了新的功能导出CSV文件,在会话中设置set markup csv on即可生成CSV文件。

在oracle版本为12.2以上时,使用set markup csv on可以更为便捷的导出CSV文件。

官方文档:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqpug/SET-system-variable-summary.html#GUID-0AA910C4-C22A-4A9E-BE13-AAA059CC7919

help如下:

标准语法为:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

默认生成CSV格式,也可指定分隔符。

示例:

sqlplus直接生成csv文件

总结

1、

参考

https://mp.weixin.qq.com/s/fy8c2N3e6mq_U4cXyLrPeA

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqpug/generating-HTML-reports-from-SQL-Plus.html#GUID-8DA36816-96D7-4575-9FD3-F727F6205EF2

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqpug/SET-system-variable-summary.html#GUID-0AA910C4-C22A-4A9E-BE13-AAA059CC7919

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部