GO连接Doris查询实战

本文介绍了如何在GO环境中,通过GOMySQLClient连接Doris数据库并执行SQL查询,包括创建用户、表,以及编写代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景

  1. 有客户提出来他们的客户端是GO的,需要使用GO语言查询Doris。

问题解决思路

  1. Doirs高度兼容MySQL协议,Java客户端目前使用MySQL JDBC Client查询Doris。
  2. GO也有MySQL Client,因此建议使用GO MySQL Client,下面进行实战。

代码实战

1. Doris环境准备
  1. 创建Doirs用户。
create database php_doris;
CREATE USER 'bigdata'@'%' IDENTIFIED BY 'mypss'
GRANT ALL ON php_doris.*  TO 'bigdata'@'%';
GRANT SELECT_PRIV,LOAD_PRIV,ALTER_PRIV,CREATE_PRIV,DROP_PRIV on php_doris.* TO 'bigdata'@'%';
  1. 创建Doris表
CREATE TABLE test
 (
         id VARCHAR(32) DEFAULT '',
         user_name VARCHAR(32) DEFAULT '',
         member_list VARCHAR(32) DEFAULT ''
 )
 DUPLICATE KEY(id)
 DISTRIBUTED BY HASH(id) BUCKETS 10
 PROPERTIES("replication_num" = "1");
  1. Doris数据插入:
INSERT INTO test VALUES ('1','alex','123');
2. GO环境准备
  1. 安装epel-release
[root@17a5da45700b go]# yum install epel-release

  1. 安装Go环境:yum install golang
[root@17a5da45700b go] yum install golang
...
Installed:
  golang.x86_64 0:1.17.7-1.el7                                                            

Dependency Installed:
  golang-bin.x86_64 0:1.17.7-1.el7            golang-src.noarch 0:1.17.7-1.el7           

Complete!
  1. Go 版本查看
[root@17a5da45700b go]# go version
go version go1.17.7 linux/amd64
  1. 安装go-sql-driver/mysql依赖
go mod init Gone
go get github.com/go-sql-driver/mysql
3. Go 查询Doris代码实战
  1. 将如下代码写入mysql-test.go文件。

    package main
    
    import (
        "database/sql"
        "fmt"
        "log"
    
        _ "github.com/go-sql-driver/mysql"
    )
    
    type People struct {
        id         string
        user_name       string
        member_list string
    }
    
    func main() {
      //1.创建连接
        db, err := sql.Open("mysql", "bigdata:mypss@tcp(127.0.0.1:9030)/php_doris")
        defer db.Close()
    
        if err != nil {
            log.Fatal(err)
        }
       //2.数据查询
        res, err := db.Query("SELECT * FROM test limit 1")
    
        defer res.Close()
    
        if err != nil {
            log.Fatal(err)
        }
        //3. 结果遍历和查看
        for res.Next() {
    
            var people People
            err := res.Scan(&people.id, &people.user_name, &people.member_list)
    
            if err != nil {
                log.Fatal(err)
            }
    
            fmt.Printf("%v\n", people)
        }
    }
    
    1. 执行go run mysql-test.go命令,执行查询并查看查询结果。

      [root@17a5da45700b go]# go run mysql-test.go
      {1 alex 123}
      [root@17a5da45700b go]# 
      
### 在 IntelliJ IDEA 中配置连接 Doris 数据库的方法 在 IntelliJ IDEA 中连接 Doris 数据库需要完成以下几个方面的配置,包括驱动的添加、数据库连接的设置以及测试连接等功能。以下是详细说明: #### 1. 添加 Doris 驱动 Doris 使用 MySQL 协议进行通信,因此可以使用 MySQL 的 JDBC 驱动来连接 Doris 数据库。如果尚未下载 `mysql-connector-java`,可以从官方网站下载最新版本[^1]。 将下载好的 `mysql-connector-java-x.x.xx.jar` 文件导入到 IntelliJ IDEA 的库中: - 打开项目设置:`File -> Project Structure -> Libraries`。 - 点击 `+` 按钮,选择 `Java`,然后定位到下载好的 `mysql-connector-java-x.x.xx.jar` 文件并添加到项目中。 #### 2. 配置数据库连接 在 IntelliJ IDEA 中配置数据库连接的具体步骤如下: - 打开数据库工具窗口:`View -> Tool Windows -> Database`。 - 在左侧的数据库面板中点击 `+` 号,选择 `Data Source -> MySQL`。 - 填写 Doris 数据库的相关配置信息: - **Host**: Doris FE 节点的地址(例如 `127.0.0.1`)。 - **Port**: Doris FE 节点的端口号(默认为 `9030`)。 - **User**: 连接 Doris 数据库的用户名。 - **Password**: 对应用户的密码。 - **Database**: 要连接的具体数据库名称(可选)。 完成后点击 `Test Connection` 按钮以验证配置是否正确[^2]。 #### 3. 使用 Stream Load 接口加载数据(可选) 如果需要通过代码实现数据加载,可以参考以下 Python 示例代码调用 Doris 的 Stream Load 接口[^3]: ```python import requests def stream_load_to_doris(data, db, table, fe_host='127.0.0.1:8030'): """ Doris Stream Load接口调用 :param data: 要加载的数据(JSON格式) :param db: 目标数据库 :param table: 目标表 :param fe_host: FE节点地址 :return: 加载结果 """ url = f"http://{fe_host}/api/{db}/{table}/_stream_load" headers = { "Authorization": "Basic cm9vdDo=", # Base64 编码后的用户名和密码 "Content-Type": "application/json" } response = requests.put(url, headers=headers, data=data) return response.json() ``` 此代码片段展示了如何通过 HTTP 请求向 Doris 数据库发送数据流,并返回加载结果。 #### 4. 注意事项 - 确保 Doris 集群已正确启动并且 FE 节点的网络地址可访问。 - 如果遇到连接问题,请检查防火墙规则或 Doris 配置文件中的网络参数。 - 在 IntelliJ IDEA 中配置数据库时,建议勾选 `All schemas` 选项以查看所有可用的数据库表结构[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值