暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle运维实践|一次导入数据引发的思考

背景

近期需要大批量的导入数据到oracle数据库,经过同事处理后,将数据转为.sql 文件并交给数据组同事处理,数据组同事在处理数据时发现数据无法导入,并提示 ORA-00917: missing comma 的错误信息。在此基础之上,开始针对数据做进一步的检查。

错误的理解导入数据

也咨询了如何将大批量数据导入到数据库中,微信群的大佬给出了一个解决方案。这里也要感谢 —— 青学会_香里香驻青学会办事处 这位大佬。其实,在我还未搞清楚数据源头以及目标数据,便开始了寻求解决方案。不过从数据处理同事这边看到一些端倪,这数据量预估了下——32G,也算是一个不小的数据,为此我还专门将同事的数据在本地使用navicat直接导入到oracle库,不过我只是导入一部分来作为测试(效果不是很理解,很慢)。即使是方案可行,但是这边由于环境限制无法进入到服务器,只能使用远程工具连接导入数据,所以这条路也被堵死了。不过,倒是学会了一种导入数据的方式。

还原整个事情的前后

数据组同事提供了如下截图,并告知使用Navicat来将 .sql 文件 导入到oracle数据库。一开始,数据处理同事提供的是经由 mysql数据库导出来的 .sql 文件,所以才会出现上述问题。为了更好的理解,我将上述事情的原委在下方流程中画出来了。其实这里应该也能看出一二,那就是从MySQL中导出来的数据文件并不能通过Navicat工具直接导入到oracle。

提供临时解决方案

在得知上述流程之后,我感觉近期脑子是不好用了,其实上述流程可以不用再费事转换,直接将CSV文件导入到Oracle库中,岂不是便捷?这主要取决于使用Navicat工具的熟练程度,而非技术性问题。

按照计划建表测试

经过自己本地测试以及咨询数据导入的同事,此种方案可行。为了更清晰准确的验证我的想法,我索要了oracle库中目标表的表结构并在本地创建了测试表。在测试过程中也出现了一些问题,我将在下一篇讲述。

最终我本地测试效果如下:

目标数据导入同事这边导入数据的最终结果如下:

数据导入的一些思考

我协助同事导入数据这件事情,更准确的来说,当我拿到这个需求,领导也提出了她想要的结果,当按照领导的要求来做无法实现时,或者实现步骤比较繁琐时,可以适当的思考下,为什么要这么做,一定要这么做吗?还是基于他们已有的经验来说,非得这么做不可呢?

数据导入的方式有很多种,选择适合的一种方式或者选择适合当前环境的一种的方式来处理数据,可以根据数据的来源、格式以及数据量的大小选择适合的方法,最终将数据导入到目标库。

这里也想说说,作为一名软件开发人员,了解并熟悉一些软件开发工具是一种硬性要求,例如在导入数据时,根据不同的库或者工具进行选择:PL/SQL Developer的Import功能、使用ODBC连接Excel和Oracle数据库、使用ORACLE自带的命令工具sqlldr将Excel文件另存为CSV或TXT格式、编写Python代码或者Java代码处理等等。

总结

本篇感觉更像是写了一个吐槽,而非技术性的强的博文。也希望更多的软件开发者能在软件开发过程中或者数据处理中,快捷开阔脑回路,走捷径来处理手头上的活。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论