专栏首页云技术分享腾讯云数据仓库 PostgreSQL:使用python将linux日志导入数据仓库
原创

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

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

云数据仓库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 日志文件

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

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

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

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

详细情况看注释。

#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数据仓库中。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ElasticSearch实战:将文本文件导入kibana

    前文写过,如何将linux日志导入到kibana----《ElasticSearch实战:Linux日志对接Kibana》,本文主要解决另一个问题...

    BH8ANK
  • ElasticSearch高级功能:Cross Cluster Replication实战

    ElasticSearch在platinum版本中,推出了Cross Cluster Replication特性(以下简称CCR),也即跨集群远程复制。

    BH8ANK
  • 【ElasticSearch性能测试】esrally最新版本的编译、安装与使用

    在使用esrally 1.4.1进行性能测试的过程中发现,如果使用geonames数据集,且ES集群版本是7.x,则测试进行到一半,就会报错,如:

    BH8ANK
  • SpringBoot基础篇配置信息之配置刷新

    本篇将介绍并演示如何实现配置信息的刷新,但不会涉及到底层的实现原理,想要探究里面的神奇,可以网上google一下,或者期待后续的源码分析篇

    一灰灰blog
  • 如何设计一个麻雀般的微型分布式架构?

    设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。系统意义是在腾讯云成本优化过程中,量化指导机房设备扩容。前半部分是...

    Java高级架构
  • 微型分布式架构设计范例

    设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。

    mariolu
  • hibernate学习笔记

      Configuration configuration = new Configuration().configure();      ServiceReg...

    yawn
  • raft 系列解读(3) 之 代码实现最小规则followercandidateleader规则RequestVote RPCAppendEntries RPC

    首先,其实raft如果你不去看理论正确性的证明,光实现的话,只要按照raft里面给出的原则写代码就ok!如果代码写出来不正确,只能是你自己实现的问题。囧

    zhuanxu
  • GXYCTF2019-PingPingPing

    看到flag.php 传?ip=127.0.0.1||cat%20flag.php

  • Java中的clone() 深拷贝 浅拷贝

    上图展示了浅拷贝:对于非基本数据类型,clone过后,结果两个指针指向了同一块儿内存空间,所以仅仅是浅拷贝,这样的话如果对一个对象进行操作,另一个内容也会变,这...

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券