问题背景
- 有客户提出来他们的客户端是GO的,需要使用GO语言查询Doris。
问题解决思路
- Doirs高度兼容MySQL协议,Java客户端目前使用MySQL JDBC Client查询Doris。
- GO也有MySQL Client,因此建议使用GO MySQL Client,下面进行实战。
代码实战
1. Doris环境准备
- 创建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'@'%';
- 创建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");
- Doris数据插入:
INSERT INTO test VALUES ('1','alex','123');
2. GO环境准备
- 安装epel-release
[root@17a5da45700b go]# yum install epel-release
- 安装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!
- Go 版本查看
[root@17a5da45700b go]# go version
go version go1.17.7 linux/amd64
- 安装go-sql-driver/mysql依赖
go mod init Gone
go get github.com/go-sql-driver/mysql
3. Go 查询Doris代码实战
-
将如下代码写入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) } }
-
执行go run mysql-test.go命令,执行查询并查看查询结果。
[root@17a5da45700b go]# go run mysql-test.go {1 alex 123} [root@17a5da45700b go]#
-