前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云数据仓库 PostgreSQL:使用python将linux日志导入数据仓库

腾讯云数据仓库 PostgreSQL:使用python将linux日志导入数据仓库

原创
作者头像
BH8ANK
修改2020-08-27 19:27:23
1.5K0
修改2020-08-27 19:27:23
举报
文章被收录于专栏:云技术分享云技术分享

原创声明:本文首发腾讯云·云+社区,未经允许,不得转载

代码语言:javascript
复制
云数据仓库PostgreSQL(CDWPG,原名Snova) 兼容 Greenplum 开源数据仓库,是一种基于 MPP(大规模并行处理)架构的数仓服务。
借助于 Snova,您可以使用丰富的 PostgreSQL 开源生态工具,实现对 Snova 中海量数据的即席查询分析、ETL 处理及可视化探索;
还可以借助 Snova 云端数据无缝集成特性,轻松分析位于 COS、TencentDB、ES 等数据引擎上的 PB 级数据。
                                                                                            ----以上摘自官网。

通过官网我们知道,snova可以使用PostgreSQL工具,因此,如果想要将linux日志导入snova数据仓库,只需要调用 python3 中的 psycopg2 模块(该模块,仅python3.x可用)。

有关该模块的下载地址和文档:https://pypi.org/project/psycopg2/

下面进入正题。

一,日志格式分析

我们此次的目的,是将linux系统下的日志文件,导入到snova数据仓库中。

/var/log/messages 日志为例,如下图。

linux系统中,/var/log/messages 日志文件
linux系统中,/var/log/messages 日志文件

打开日志,分析日志格式,主要由2列构成:一列是时间,一列是日志内容,如下图。

/var/log/messages 日志文件结构
/var/log/messages 日志文件结构

二,代码实现:数据格式化与导入

总体思路:要将日志导入数据仓库,必须:1,对日志内容进行格式化;2,使用python中的 psycopg2 工具。

详细情况看注释。

代码语言:python
复制
#coding=utf-8
__author__ = 'BH8ANK'
import psycopg2

f = open('/var/log/messages')
#按行读取
line = f.readlines()
#日志总行数
row = len(line)
print(row)

#连接数据库并创建新表test,
conn = psycopg2.connect(dbname="postgres", user="bh8anktest",password="YourPassword", host="xx.xx.xx.xx", port="5436")
cur = conn.cursor()
cur.execute("CREATE TABLE test (date text,logs text);")

i = 1
while i < row:
    #日期时间的格式化
    log = line[i].split(' ',3)#split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则按照从前往后的顺序匹配,分隔为 num+1 个子字符串
    date = log[0] +'-'+ log[1] +'-'+ log[2]
    if "'" in log[3]:
        log[3] = log[3].replace("'","''")
    print(log[3])
    sql_txt = "insert into test (date,logs) values(" +"'"+ date + "'"+','+"'''"+log[3]+"'''"+');'
    print(sql_txt)
    cur.execute(sql_txt)
    conn.commit()
    i = i+1

#conn.commit()
conn.close()

print('数据导入完成')

执行代码,如下图。

执行上面的代码
执行上面的代码

登入数据库,查看表内容,如下图。

查询导入数据仓库的日志内容
查询导入数据仓库的日志内容

至此,已将日志导入到snova数据仓库中。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,日志格式分析
  • 二,代码实现:数据格式化与导入
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档