Power BI 连接GaussDB提取数据方法
Power BI本身没有直接的链接器来获取GaussDB,目前连接GaussDB的方法有2个:
ODBC, JDBC,这两种方式在云端都要通过设置网关,pbi云端通过网关链接到虚拟机或者某台电脑上,电脑安装个人网关(组织网关没有成功,不知道为什么,知道原因的希望能留言),下面说下两种连接方式:
正常来说,odbc链接或者jdbc链接通常来说都很正常,这里主要要注意的事情是 由于gauss数据库里面有个session_timeout 设置,可能出现链接超时的情况,而解决这个问题,通常有3中方式:
1、全局设置 session_timeout = 一个需要的值
2、单用户设置 session_timeout = 一个需要的值
3、单次执行sql请求的时候,设置session_timeout = 一个需要的值,下面的链接方式中在sql语句中又设置这个,如果不需要设置此,可以将其去掉,当然这个执行时候设置是最好的方式;
一、Power BI 通过ODBC 连接gaussDB 高斯数据库
1、下载odbc驱动:下载JDBC或ODBC驱动_数据仓库服务 GaussDB(DWS)_华为云
页面最下方(上方是JDBC驱动)
2、解压Windows版本的ODBC驱动包,并安装“psqlodbc.msi”。
3、打开驱动管理器,请勿直接使用“控制面板> 管理工具 > 数据源(ODBC)”,
32位系统位置:C:\Windows\SysWOW64\odbcad32.exe
64位系统位置:C:\Windows\System32\odbcad32.exe
4、配置连接数据源。
- 在打开的驱动管理器上,选择
其中,配置项“Server”和“Port”的值,可以在GaussDB(DWS)的管理控制台查看。请登录GaussDB(DWS)管理控制台,单击“连接客户端”, 在“数据仓库连接字符串”区域,选择指定的集群,获取该集群的“内网访问地址”或“公网访问地址”。具体步骤请参见获取GaussDB(DWS)集群连接地址。
- 单击“Test”验证连接正确,界面提示“Connection successful”。
5、power bi上使用
注意这里,点击高级选项:
要写上2条SQL语句:
set session_timeout=0; select * from tb1;
注意,因为可能数据库有设置session_timeout 属性(连接空闲关闭时间,比如有的设置是600秒,导致链接在被请求完毕后,处于非活动状态时,超过10分钟被关闭,如果十分钟后在请求,就会出现链接超时的情况),所以有第一行语句: 这里是个坑,一定要注意!
至此ODBC链接讲完
以上参考文章:使用ODBC连接_数据仓库服务 GaussDB(DWS)_华为云 下载JDBC或ODBC驱动_数据仓库服务 GaussDB(DWS)_华为云
二、Power BI 通过JDBC 连接gaussDB 高斯数据库
正常来说,powerbi没有直接的路径通过JDBC链接高斯数据库,但是可以通过执行python语句来调用JDBC驱动来连接数据库
1、基础配置:
- JDBC驱动
- python3.8(可能不一定是非要是这个版本,但是这个版本可以)
- openjdk,我用的是11
1) JDBC驱动下载:下载JDBC或ODBC驱动_数据仓库服务 GaussDB(DWS)_华为云
选择对应的驱动,然后有一点要注意,这个驱动解压后有两个JDBC的驱动jar包,分别为“gsjdbc4.jar”和“gsjdbc200.jar”
gsjdbc4.jar 我理解对应的数据库URL前缀为jdbc:PostgreSQL:// 开头的数据库
gsjdbc200.jar:对应的数据库连接的URL前缀为“jdbc:gaussdb”开头的数据库,实际使用的时候,选择对应的即可,这点很重要
还要知道一个内容,drive类名,这个类名可以这么找:
通过一步一步的往下找,找到有driver.class这个文件的目录,那么driver类名就是这个路径
gsjdbc4.jar driver类名:org.postgresql.Driver,对应的数据库URL前缀为jdbc:PostgreSQL:// 开头的数据库
gsjdbc200.jar driver类名:com.huawei.gauss200.jdbc.Driver,对应的数据库连接的URL前缀为“jdbc:gaussdb”开头的数据库
2) python环境,安装python3.8,然后安装pandas包、matplotlib包,我理解这两个包是必须的,无论是否使用,安装方法略,如果不会自行网上搜索
3)openjdk ,因为调用java包,需要有java环境,这里推荐jdk11,官方下载链接似乎出了问题,即使注册账号后,点击也无法下载,可以去这个链接下载
- jdk-8u411-windows-x64.exe
- jdk-11.0.23_windows-x64_bin.exe 推荐
- Others: https://helpx.adobe.com/coldfusion/kb/coldfusion-downloads.html#downloads3
- 国内相对低版本的 jdk11 在华为云镜像仓库有提供:Index of openjdk-local
- 也可以去github上,点击进入
下载好后,配置java环境,方法见链接 windows下载jdk并安装步骤(保姆级教程)
至此基础配置结束
2、python代码编写:
1)安装python库 先安装jpype1,再安装jaydebeapi
pip install jpype1
pip install jaydebeapi
2)准备配置参数
-
-
-
driver:Driver.class所在位置
-
gsjdbc4.jar driver类名:org.postgresql.Driver,对应的数据库URL前缀为jdbc:PostgreSQL:// 开头的数据库
-
gsjdbc200.jar driver类名:com.huawei.gauss200.jdbc.Driver,对应的数据库连接的URL前缀为“jdbc:gaussdb”开头的数据库
-
-
jarFile:jar包所在位置,就是gsjdbc4.jar 或者 gsjdbc200.jar 的存放位置
-
url:jdbc:<数据库类型[postgresql]>://:/<数据库名>
-
user:数据库用户名
-
password:密码
-
-
3).具体pytyon代码编写
import jaydebeapi import pandas as pd from contextlib import closing # 数据库连接配置 url = 'jdbc:gaussdb://*.*.*.*:*/*?options=-c session_timeout=0' #这里可能不起作用,如果不起作用需要在SQL语句中设置 user = '***' password = '***' driver = 'com.huawei.gauss200.jdbc.Driver' jar_file = 'D:\JDBC\gsjdbc200.jar' try: # 建立数据库连接 conn = jaydebeapi.connect(driver, url, [user, password], jar_file) # 使用 contextlib.closing 确保资源释放 with closing(conn) as conn: with closing(conn.cursor()) as curs: # 执行 SQL 查询,注意这里sql语句有2句,第一句非常重要,否则很可能会产生连接超时 sql_str = 'set session_timeout=0;SELECT * FROM table1' curs.execute(sql_str) # 分块提取数据 chunk_size = 100000 # 每块 10 万行 result = [] # 存储所有数据 while True: # 提取一块数据 rows = curs.fetchmany(chunk_size) if not rows: # 如果没有数据,退出循环 break # 将当前块数据添加到结果中 result.extend(rows) print(f"已提取 {len(result)} 行数据") # 打印进度 # 将结果转换为 DataFrame df = pd.DataFrame(result, columns=[desc[0] for desc in curs.description]) # 输出 DataFrame(Power BI 会捕获此变量) df except Exception as e: print(f"发生错误: {e}")
注意,这里 url里面加了 ?options=-c session_timeout=0 的原因是为了防止session_timeout问题,如果不起作用,可以在sql语句中执行一次
4) 将上述代码复制到power bi ,使用,完毕
参考文章:Python使用jdbc对openGauss数据库进行操作(一) - 1202李祎铭 - 博客园
以上2个方式都说完了,最终实际刷新数据的时候,ODBC, JDBC,这两种方式在云端都要通过设置网关,pbi云端通过网关链接到虚拟机或者某台电脑上,电脑安装个人网关(组织网关没有成功,不知道为什么,知道原因的希望能留言)
以上只是个人的使用体验,如果你有更好的方式,或者文中所述不对的地方,还请留言指正;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库