我需要每天运行1000个mysql select查询并将结果保存在不同的文件中(每个查询一个文件)。目前,每个mysql select查询都是通过shell脚本作为后台命令运行的,如下所示
echo "select (CART_ID), '', (USER_ID) from shopping_cart where (
DATE_MODIFIED >= '2018-01-08 00:00:00'
and DATE_MODIFIED < '2018-01-10 00:00:00'
)" | mysql -u <usr_name> -p<password> -h <host> -P 3306 \
-D <schema< -C -N --default-character-set=utf8 > \
/Users/selumalai/Desktop/520_250_493991738_shopping_cart_\
2018_01_12_00_00_00.dat &
目前,大约有5个shell脚本文件;每一个包含大约250个相似的查询,写入250个不同的文件。因此,每天大约有1000个文件。要求不是加入查询以产生统一的结果。
在java中有更好的方法吗?google表示,为每个查询(线程)打开mysql连接的成本很高,而运行mysql命令shell脚本的java程序并没有按预期工作。
有什么建议吗?
1条答案
按热度按时间8iwquhpp1#
通常,最好编写更少的sql命令,在结果集中返回更多的信息行,然后使用程序读取这些数据。
您可以尝试这种查询:
这将得到一个包含60天数据的结果集,第一列给出日期。然后java程序就可以遍历结果集并提取每天的信息。
您知道,从shell脚本运行数千个查询的想法是可行的。但它天生就很慢。而且,很难并行化。运行一个查询要好得多,特别是如果数千个查询可以简化为一个查询的话。