我正在做与TPC-H相关的事情。
我在几个文件中都有sql语句。我需要执行它们并记录执行时间,如下所示:
13 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我还需要结果集以查看是否获得正确的结果。
我的平台是linux(centOS)。
如果我手动执行此操作,则将在mysql中键入如下语句:
shell> mysql -u tpch -p
mysql> use tpch;
mysql> source /home/liova/download/tpch/queries/Q1.sql;
mysql> source /home/liova/download/tpch/queries/Q2.sql;
Run Code Online (Sandbox Code Playgroud)
要查找执行时间,您应该在程序的开头初始化一个日期对象,然后将其与程序结尾的另一个日期对象进行比较。这将为您提供执行时间的整数值。然后在需要的地方使用此int(例如,将其打印到控制台,文件等)。
Date startDate = new Date();
//Run the rest of the program
Date endDate = new Date();
int msElapsedTime = startDate.getTime() - endDate.getTime();
Run Code Online (Sandbox Code Playgroud)
如果您不需要在Java程序中执行与查询结果相关的任何操作,则可以使runtime.exec()mysql执行查询来简化此简单操作。唯一的主要缺点是您无法打印出受影响的结果行数:
Date startDate = new Date();
runtime.exec("mysql db_name < /home/liova/download/tpch/queries/Q1.sql");
Date endDate = new Date();
int msElapsedTime = startDate.getTime() - endDate.getTime();
Run Code Online (Sandbox Code Playgroud)
如果您实际上需要对结果做些事,那runtime.exec()将不足以满足您的需要。继续阅读...
要读取SQL源,只需将其读取为文本文件即可。如果将SQL的每一行都作为一个单独的SQL查询,这将是最简单的,因为否则,您将不得不进行一些解析和调整。这是一次读取一行文件的示例。
要运行SQL,请使用JDBC。这是一个教程。第1到5项将详细介绍运行sql和使用结果所需的一切(从建立sql连接到运行查询再到处理返回的resultSet对象)。如果这些步骤中的任何一个给您带来麻烦,那么最好的选择是根据您在处理过程中遇到的特定问题提出一个单独的问题。
| 归档时间: |
|
| 查看次数: |
5995 次 |
| 最近记录: |