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三者統一起來比較好。)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM