Python小白-读取log文件并将数据导入Oracle数据库

步骤描述:首先Python获取到log文件-->逐行读取log文件通过空格将每行分割成多个值-->链接数据库-->将分割完的元素insert到表中对应列
首先贴上最终可运行的完整代码:
 
 
由于是,新安装的开发工具,在完成以上代码过程中,遇到了一些问题,总结如下:
一..缺失cx_Oracle模块:提示找不到该模块(忘记截图了)
解决方法:
1.下载cx_Oracle对应whl文件;此处上地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_oracle,找到适合的版本,我是64位的,如下图所示:
2.下载并安装该文件,安装方法:控制台执行-->pip+install+whl文件路径;执行完上述步骤,问题解决;
二..客户端不匹配:安装完cx_Oracle,模块的问题解决了,运行代码又出现错误如下:

 

解决方法:
1.下载 instantclient 64位, 下载链接:http://jvniu.jb51.net:81/201708/tools/instantclientx64_jb51.rar

2.下载完成后解压,在解压后的文件夹内找到文件夹 instantclient_11_2;将整个instantclient_11_2文件夹移动到oracle安装目录的Oracle_client子文件夹内;

3.将文件路径添加到系统环境变量中;

三..非法的变量名\编号:解决完上述问题,运行代码出现了下面的错误: 
 
该错误是由于占位符的错误使用:错误部分代码如下:

 

 解决方法:将占位符(%s,%s..)替换为(:1,:2..)就可以啦!

 

最后终于运行成功啦,but....去数据库查看竟然数据没导进去!!!最后发现是程序insert完,提交的时候系统自动出来的commit方法竟然没有加括号,而且木有提示错误,需要我们手动加上啊! ! ! !

一个简单的文件解析入库的Python程序终于完成啦。

(由于我电脑上PL/SQL配置的是32位Oracle客户端instantclient_11_2,但是在用spyder跑Python代码链接数据库的时候下载了64位的客户端instantclient_11_2,并将Oracle_client下的32位instantclient_11_2改成了别的名字,所以在通过PL/SQL登录数据库的时候出现错误,提示缺少32位客户端,此时将原来32位的instantclient_11_2文件名字改回instantclient_11_2就可以用PL/SQL登录数据库了,但是下次Spyder连接数据库的时候又需要把64位的客户端文件名改回instantclient_11_2。为了避免麻烦,还是重新下载64位的PL/SQL三者统一起来比较好。)

猜你喜欢

转载自www.cnblogs.com/easefly/p/12566653.html