presto导出数据csv
presto官方文档并没有提供便捷的导数方法。根据查询的量级,我们只好自己选择导出的方式。
-
数量较少考虑使用工具superset(百万级以下的)
superset支持的数据源也很多。按照文档,根据自身系统执行相应的命令安装即可。安装完成后然后我们可以在界面上操作添加数据源,执行相关的查询后点击导出即可。
-
数量量较大时命令行接口(Command Line Interface)
下载presto-cli-xxx-executable.jar,然后重命名为presto,执行./presto --help
,会有相关可利用选择。我们使用 --execute 执行命令导出csv。例如:
presto --server ip:port --catalog=xxx --user=xxx --execute '需要导出的sql查询命令' --output-format CSV > xxx.csv
-f 还可以执行sql脚本。查询复杂建议使用这种方式,presto会把execute的’'和sql脚本里的’混淆导致失败,另外sql脚本里要加上;
结束,不然会导致Non-terminated statement
异常。
如果csv出现中文乱码,执行下面指令:iconv -f UTF8 -t GB18030 xxx.csv >tmp.csv
-
使用hive导出
presto作为查询引擎,支持的数据源也众多。大数据量我们尽可能选择转存到数据仓库中。然后通过hive,spark等命令直接导出文件。
hive:hive -e "select * from xxx.xxx"|tr "\t" "," > xxx.csv
使用逗号分隔,然后在excel中打开就会自动分成多列展示了。
如果csv出现乱码,同样执行:
iconv -f UTF8 -t GB18030 xxx.csv >tmp.csv