V2EX praynise 的所有回复 第 1 页 / 共 2 页
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX    praynise    全部回复第 1 页 / 共 2 页
回复总数  37
1  2  
@dongyx 抱歉由于工作原因,我这边还没有抽出时间实现这个对比,后续待我完成给您后续反馈,非常感谢~
@dongyx 我用 go 实现以下,非常感谢~
@liprais pandas 加载太大的文件内存就撑不住了 orz
@dongyx 直接用 diff 的话,需要解析 diff 输出内容,会比较麻烦
2019-05-23 07:28:09 +08:00
回复了 storyicon 创建的主题 Go 编程语言 Gos: Armed Golang
star 一下,交叉编译对我来说很有用,gos 方便多了。不过应该还是不支持 CGO 吧?
2019-05-17 16:51:09 +08:00
回复了 jss 创建的主题 Go 编程语言 现在上手 GO 得自己造框架吧
有个叫 go frame 的了解一下…一个大而全的框架,还包含了好多有用的功能,不管是不是 web 应用都用得上
2019-05-07 10:58:33 +08:00
回复了 imherer 创建的主题 Go 编程语言 Go 操作 Postgresql 使用 upsert 报语法错误
EXCLUDED 代表从外部来的,就是你 value 中的值。在我的例子中,EXCLUDED.what 代表就是$3。我忘了付上我得表结构了
2019-05-06 17:04:47 +08:00
回复了 imherer 创建的主题 Go 编程语言 Go 操作 Postgresql 使用 upsert 报语法错误
好使啊,以下是我测试的代码,可以正常执行

package main

import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)

func main() {
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=disable",
"localhost", 5432, "postgres", "postgres", "postgres")
db, err := sql.Open("postgres", psqlInfo)
if err != nil {
panic(err)
}
defer db.Close()

err = db.Ping()
if err != nil {
panic(err)
}
sql := "insert into testupsert values ($1,$2,$3) on conflict (uid) do update set total=testupsert.total+1,what = EXCLUDED.what"
_,err = db.Exec(sql,1,3,3)
if err != nil{
panic(err)
}
}
2019-01-11 13:23:09 +08:00
回复了 Fiery123 创建的主题 Go 编程语言 GO 任务队列矿建
建议配合其他定时任务工具来实现吧,go 下面有很多定时任务包
主要还是针对 go 开发,python 还是没有寻找到一个好的批量离线部署方式,现在越来越多的把 python 的工具用 go 重写了…
@tulongtou 因为有些依赖 C 的东东没法交叉编译…例如我这边开发很多需要用到 oracle 的驱动,这个交叉编译就会报错
@azh7138m 这个可以,非常感谢
回来填个坑,留一自己的优化思路和成果…
查了一些资料,使用 interface 的性能会受到较大的影响,以前的程序中使用 interface 过多,直接影响了效率
新的思路如下
首先查询出各字段类型,针对不同的字段类型直接例如 excel 库的方法插入对应类型的数据。
具体为:使用一个线程查询数据库,使用[]sql.Rawbyte 作为接收数据库数据的载体,通过一个 interface{}列表进行 scan,不断将[]sql.Rawbyte 存入通道
另外一个线程不断获取[]sql.Rawbyte 并根据字段类型进行转换。为了进一步加快速度,首先可以声明一个 map[int]func(raw sql.Rawbyte,cell *xlsx.Cell),利用字段位置直接设置好每个位置该调用什么方法
经过测试,改进后的程序执行效率大幅度提高,导出数据效率比 python 版本快了一倍,耗时缩短一半
代码说明如下:
概述:小弟的程序可以通过输入数据库类型、数据库连接字符串、执行 sql 或者含有 sql 的文件等,将数据库中的 sql 查询出来并写入 excel
性能:目前导出 25W 条数据,每行数据 5 个字段,数据库类型 oracle,驱动 goracle,excel 生成库使用 excelize,用时 1 分 33 秒;同环境使用 python3.6,数据库驱动 cx_Oracle,excel 生成库使用 pyexcelerate,同样的查询语句,用时 51s (是的…没干过 python/(ㄒoㄒ)/~~)
程序描述:为了提升执行效率,小弟使用了 goruntine,一个线程专门执行 sql 并将结果生成[]interface{}并装入通道,另外一个线程不断的从通道中取出[]interface{}并写入 excel
个人感觉可能存在的问题点:
1、golang 的数据库查询方式只能一条一条生成,同时,机制用到了反射,而不像 python 可以通过 fetchmany 一次性获取大量数据,不知道此处是否会有性能差距
2、当字段类型是 date 类型时,当字段为空时,如果不做 isZero 判断,输出到 excel 的日期零值很异常(值为-5XXXXX,显示为##########)。所以每取出一条[]interface{},都需要挨个判断类型是不是日期,如果是日期的话,是不是零值,此处可能会影响效率。而 python 没有这个问题

请各位 golang 大大给提点优化意见吧,谢谢大家
@860670496 你好,我需要使用 setSheetRow 按行插入数据,然后再按照行来统一设定本文,请问可以实现么
fabric 有 python3 版本的 fabric3,基本上和 fabric 保持了版本和功能一致(不过每次都是 python2 版本先更新,python3 版本可能要晚个一段时间,如果是小更新的话可能不同步更新)
既然想要用 paramiko,说明可以接受基于 ssh 的调用吧?那样的话,如果规模小可以选择 fabric,如果规模大一点可以选择 ansible 和 saltstack
@MeteorCat 都配置了
@nekoyaki 这个帮了我大忙了,而且还帮我发现了个不小的坑,谢谢啦,哈哈
1  2  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     882 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 29ms UTC 22:27 PVG 06:27 LAX 15:27 JFK 18:27
Do have faith in what you're doing.
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86