【環境介紹】
系統環境:win10 + python 3.5.4 + PyCharm
【背景描述】
需求:將數據庫和主機查詢的數據信息寫入到Excel表格中
【采集數據腳本信息】
數據庫層面 列子:磁盤組信息:
select to_char(sysdate, 'yyyy-mm-dd,hh24:mi:ss') check_time,name,total_mb/1024,free_mb/1024,usable_file_mb/1024,
round(100 * (total_mb - usable_file_mb) / total_mb, 2) used_pct from v$asm_diskgroup;
主機層面 例子:本地空間信息:
df -h
生成原格式數據信息:
cat >xxxdb.log
<data>
<diskgroup>
<data>
<diskgroup>
CHECK_TIME NAME TOTAL_MB FREE_MB USABLE_FILE_MB USED_PCT
------------------- ------------------------------ ---------- ---------- -------------- ----------
2019-06-26,14:53:14 ARCH 817016 449942 449942 44.93
2019-06-26,14:53:14 OCR 91344 90476 30014 67.14
2019-06-26,14:53:14 XXXXBDATA_N 3068346 88085 88085 97.13
2019-06-26,14:53:14 XXXXDBDATA 3579716 425776 425776 88.11
</diskgroup>
</data>
<data>
<filesystem>
2019-03-26_14:53:23
Filesystem Size Used Available Capacity Mounted on
rpool/ROOT/solaris 196G 8.2G 40G 18% /
rpool/ROOT/solaris/var
196G 1.7G 40G 5% /var
fd 0K 0K 0K 0% /dev/fd
swap 555G 60M 555G 1% /tmp
rpool/ROOT/solaris/oracle
196G 72G 40G 65% /oracle
rpool/VARSHARE 196G 60M 40G 1% /var/share
rpool/VARSHARE/zones 196G 288K 40G 1% /system/zones
rpool/data 10G 288K 10G 1% /data
rpool/export 196G 304K 40G 1% /export
rpool/export/home 196G 29G 40G 43% /export/home
rpool/export/home/admin
196G 352K 40G 1% /export/home/admin
rpool/guests 196G 320K 40G 1% /guests
zg-audit01 29G 1.5G 28G 6% /oracle/audit
------------------- ------------------------------ ---------- ---------- -------------- ----------
2019-06-26,14:53:14 ARCH 817016 449942 449942 44.93
2019-06-26,14:53:14 OCR 91344 90476 30014 67.14
2019-06-26,14:53:14 XXXXBDATA_N 3068346 88085 88085 97.13
2019-06-26,14:53:14 XXXXDBDATA 3579716 425776 425776 88.11
</diskgroup>
</data>
<data>
<filesystem>
2019-03-26_14:53:23
Filesystem Size Used Available Capacity Mounted on
rpool/ROOT/solaris 196G 8.2G 40G 18% /
rpool/ROOT/solaris/var
196G 1.7G 40G 5% /var
fd 0K 0K 0K 0% /dev/fd
swap 555G 60M 555G 1% /tmp
rpool/ROOT/solaris/oracle
196G 72G 40G 65% /oracle
rpool/VARSHARE 196G 60M 40G 1% /var/share
rpool/VARSHARE/zones 196G 288K 40G 1% /system/zones
rpool/data 10G 288K 10G 1% /data
rpool/export 196G 304K 40G 1% /export
rpool/export/home 196G 29G 40G 43% /export/home
rpool/export/home/admin
196G 352K 40G 1% /export/home/admin
rpool/guests 196G 320K 40G 1% /guests
zg-audit01 29G 1.5G 28G 6% /oracle/audit
</filesystem>
</data>
</data>
【python 腳本】
#加載插件
import xlsxwriter, sys, re
#讀取本地路徑采集的日志信息
patch_file_name1= str('D:\\軟件\\python\\object\\datafiles\\xxxdb.log')
#讀取一行的數據
inFile1= open(patch_file_name1,'r').read()
#以<data> </data>為首尾的中間內容作為一個數組
data = re.findall(r'<data>\n([\s\S]+?)</data>\n',inFile1)
#定義Excel表格名稱
workbook = xlsxwriter.Workbook('chuzhang.xlsx')
#定義表格的格式
cell_format = workbook.add_format({
'bold': True,
'border': 1,
'fg_color': '#B8B8B8',
})
#定義表格中的文本內容為自動換行格式
cell_format.set_text_wrap()
#創建第一個sheet1名稱
worksheet1 = workbook.add_worksheet('磁盤組使用率')
#寫入表格位置並寫入數組數據,然后使用定義的表格格式
worksheet1.set_column("A:A", 100)
worksheet1.write('A2', data[0], cell_format)
#創建第二個sheet2名稱
worksheet2 = workbook.add_worksheet('本地磁盤使用率')
#寫入表格位置並寫入數組數據,然后使用定義的表格格式
worksheet2.set_column("A:A", 100)
worksheet2.write('A2', data[1], cell_format)
#關閉表格信息
workbook.close()
【最終結果】
【參考官方文檔】
xlsxwriter官方網站,http://xlsxwriter.readthedocs.org/