当前位置:Gxlcms >
数据库问题 >
golang 下 mongodb 与 postgresql 插入速度的测试
golang 下 mongodb 与 postgresql 插入速度的测试
时间:2021-07-01 10:21:17
帮助过:3人阅读
struct {
Date int32
O, H, L, C, V, A float32
}
mongo 用了mgo 包,插入代码如下:
func ReadHq(conn net.Conn, c *mgo.Collection, Code
string) {
var buf [
28]
byte
var x Stock
var y Kline_Day
for i :=
0; ; i++
{
_, err := conn.Read(buf[
0:
28])
if err ==
io.EOF {
fmt.Println("此个文件传输结束")
break
}
if err !=
nil {
fmt.Println(err)
return
}
b_buf := bytes.NewBuffer(buf[
0:
28])
binary.Read(b_buf, binary.LittleEndian, &x)
//binary.LittleEndian 是内存中的字节序的概念,就是把低字节的放到了后面。网络传输一般用BigEndian,内存字节序和cpu有关,编程时要转化。
y.Code =
Code
y.A =
x.A
y.C =
x.C
y.Date =
x.Date
y.H =
x.H
y.L =
x.L
y.O =
x.O
y.V =
x.V
//fmt.Println(y)
err = c.Insert(&
y)
if err !=
nil {
panic(err)
}
}
return
}
#postgresql 的表结构
CREATE TABLE json_test
(
id serial NOT NULL,
data jsonb,
CONSTRAINT json_test_pkey PRIMARY KEY (id)
)
用了 "github.com/lib/pq" 这个包:
插入代码:
func ReadHq(conn net.Conn, db *sql.DB, Code
string) {
var buf [
28]
byte
var x StockDay
for {
_, err := conn.Read(buf[
0:
28])
if err ==
io.EOF {
fmt.Println("此个文件传输结束")
break
}
if err !=
nil {
fmt.Println(err)
return
}
b_buf := bytes.NewBuffer(buf[
0:
28])
binary.Read(b_buf, binary.LittleEndian, &x)
//binary.LittleEndian 是内存中的字节序的概念,就是把低字节的放到了后面。网络传输一般用BigEndian,内存字节序和cpu有关,编程时要转化。
//fmt.Println(y)
//err = c.Insert(&y)
buf, err := json.Marshal(&
x)
//插入数据
stmt, err := db.Prepare(
"INSERT INTO json_test(data) VALUES($1) RETURNING id")
checkErr(err)
_, err = stmt.Exec(
string(buf))
checkErr(err)
}
return
}
golang 下 mongodb 与 postgresql 插入速度的测试
标签: