2011-06-01 44 views
1

HI,在Java中模拟Oracle SPOOL

我正在将shell脚本转换为Java程序。 shell脚本运行一个sql语句并将该文件假脱机到一个外部文本文件。我想用Java来模拟这个。 (输出文件必须与在SQL +中运行comman时生成的格式完全相同)。谁能给我一些指引,例如格式化间距...该文件

感谢

+1

当然,只要写入标准输出并将其重定向到一个文件就足够了? – Liv 2011-06-01 16:55:13

回答

0

首先,这是一个固定的查询,或任意一个?如果它是固定的,你会有一个更容易的时间。任意查询必须通过dbms_sql运行,以便您可以返回列属性。这很混乱。

其次,请记住,SQL * Plus格式可以通过客户端中的设置进行控制。诸如行长度,页面大小,列宽度,标题等等都可以从执行改变为执行。

也就是说,假设它是一个固定的查询,那么我:

  1. 打开游标用于查询
  2. 如果有数据,打印列标题(包括“----- - ”线)
  3. 循环通过游标,打印备案的每个值在适当的格式
  4. 关闭游标

您应该能够通过检查SQL * Plus的输出并复制它来格式化输出。

+1

为什么你需要dbms_sql?!?您可以解析一个语句,然后检查MetaData! – 2011-06-01 21:13:26

+0

不确定如何做到这一点,实际上。有任何链接? – DCookie 2011-06-01 22:38:13

+0

除非我误解,否则@ammoQ指的是由'ResultSet.getMetaData()'返回的'ResultSetMetaData'。一旦你有了,你就不需要依赖'dbms_sql',对吗? – 2011-06-01 23:06:29