当前位置: 首页 > 工具软件 > prest > 使用案例 >

postgres prest windows下的sql脚本问题

江飞章
2023-12-01

折腾了半天在网上搜索,关于prest的内容还是较少,最后还是决定查看源码。

根据https://postgres.rest/executing-sql-scripts/中的 执行sql脚本部分进行配置,其中

[queries] location = /path/to/queries/

部分在windows下需要改为 [queries] location = “./queries/”,引号内的文件夹地址根据自己实际地址修改。

SELECT * FROM table WHERE name = "{{.field1}}" OR name = "{{.field2}}";

这边需要注意,如果查询的where后面字段为 int类型,不需要“”,或者全部使用‘’。且最后的;是不需要的,因为在prest里面最终会拼出SELECT json_agg(s) FROM (select * from logs where id = '1')这样的sql语句进行执行,;会导致错误。

另外在windows下sql.go下ExecuteScriptQuery,中2个函数需要注意 

config.PrestConf.Adapter.GetScript 这个函数中会调用queries.go文件中的 GetScript函数,其中调用了filepath.join函数,但其中join使用的是os.Separator在windows下 是“\\”

config.PrestConf.Adapter.ParseScript这个函数中则会调用queries.go文件中的ParseScript函数,其中调用了path.Split函数,但此函数中strings.LastIndex(path, "/") 使用的为“/” 会导致split不成功,后面出错,执行sql模板不成功。

根本原因为filepath中使用的os.Separator最终会指向GO/Root目录下src/os/path_unix.go 或src/os/path_windows.go,这2个文件中

os.Separator是有区别的。

刚开始研究prest,不知道对不对,欢迎大牛指证。

 类似资料: