如何以DBeaver为中间件从SAP HANA提取数据至Jupyter Notebook?
解决方案
方法1:复用DBeaver已有的SAP HANA JDBC驱动,通过Python的jaydebeapi连接
你已经通过DBeaver成功连接SAP HANA,说明DBeaver本地已存储对应JDBC驱动文件,可直接复用该驱动,结合Python的jaydebeapi库实现连接,无需额外安装hdbcli或付费ODBC驱动。
步骤1:定位DBeaver中的SAP HANA JDBC驱动路径
- 打开DBeaver,右键已建立的SAP HANA连接 → 选择「编辑连接」
- 切换到「驱动」标签页,点击「库」按钮,即可看到驱动文件的存储目录(通常路径类似
C:\Users\<你的用户名>\.dbeaver\drivers\maven\maven-central\com.sap.cloud.db.jdbc\ngdbc\<版本号>,目录内包含ngdbc-<版本号>.jar文件)
步骤2:安装jaydebeapi库
在Jupyter Notebook的代码单元格中执行:
!pip install jaydebeapi
步骤3:编写Python代码实现连接与查询
import jaydebeapi import pandas as pd # 替换为你的实际配置信息 jdbc_driver_path = r"C:\Users\你的用户名\.dbeaver\drivers\maven\maven-central\com.sap.cloud.db.jdbc\ngdbc\2.19.12\ngdbc-2.19.12.jar" host = "你的HANA主机名" port = "你的端口号" user = "你的用户名" password = "你的密码" database = "你的目标数据库名称" # 构建JDBC连接URL jdbc_url = f"jdbc:sap://{host}:{port}/?databaseName={database}" # 建立连接 conn = jaydebeapi.connect( "com.sap.db.jdbc.Driver", jdbc_url, [user, password], jdbc_driver_path, ) # 执行查询并转为DataFrame query = "SELECT * FROM 你的目标表名 LIMIT 10" df = pd.read_sql(query, conn) # 查看数据 print(df) # 关闭连接 conn.close()
方法2:DBeaver导出静态数据+Python读取(适合批量非实时场景)
如果无需实时查询,可通过DBeaver预先提取数据并导出,再在Jupyter中读取:
- 在DBeaver中打开SQL编辑器,执行目标查询语句
- 右键查询结果 → 选择「导出结果」,将数据保存为CSV/Parquet等格式到本地
- 在Jupyter中用
pandas.read_csv()或pandas.read_parquet()直接读取文件
注意事项
- 驱动路径中的反斜杠需用
\\转义,或使用Python原始字符串(前缀加r) - 若提示驱动类找不到,检查DBeaver驱动库中的jar文件是否完整,或尝试更新DBeaver的SAP HANA驱动至最新版本
内容的提问来源于stack exchange,提问作者Sam Hinton
相关产品推荐
相关产品推荐

