﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-每日一得-随笔分类-Oracle</title><link>http://www.blogjava.net/alex/category/19060.html</link><description>不求多得,只求一得
about java,hibernate,spring,design,database,Ror,ruby,快速开发&lt;br/&gt;
最近关心的内容:Jboss Seam框架，JSF,EJB3 &lt;br/&gt;
本站的官方站点是:&lt;a href="www.foxlog.org"&gt;www.foxlog.org&lt;/a&gt;
</description><language>zh-cn</language><lastBuildDate>Sun, 19 Aug 2007 09:14:32 GMT</lastBuildDate><pubDate>Sun, 19 Aug 2007 09:14:32 GMT</pubDate><ttl>60</ttl><item><title>利用其他表的数据update当前表</title><link>http://www.blogjava.net/alex/archive/2007/08/19/137929.html</link><dc:creator>Alex</dc:creator><author>Alex</author><pubDate>Sun, 19 Aug 2007 04:49:00 GMT</pubDate><guid>http://www.blogjava.net/alex/archive/2007/08/19/137929.html</guid><wfw:comment>http://www.blogjava.net/alex/comments/137929.html</wfw:comment><comments>http://www.blogjava.net/alex/archive/2007/08/19/137929.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alex/comments/commentRss/137929.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alex/services/trackbacks/137929.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 经常用到update语句，不过很少用到其他表的数据来更新当前表，这次用到了，总结一下<br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/alex/archive/2007/08/19/137929.html'>阅读全文</a><img src ="http://www.blogjava.net/alex/aggbug/137929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alex/" target="_blank">Alex</a> 2007-08-19 12:49 <a href="http://www.blogjava.net/alex/archive/2007/08/19/137929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 从数据库导出大数据量的文件的解决方案</title><link>http://www.blogjava.net/alex/archive/2007/08/18/137798.html</link><dc:creator>Alex</dc:creator><author>Alex</author><pubDate>Sat, 18 Aug 2007 04:46:00 GMT</pubDate><guid>http://www.blogjava.net/alex/archive/2007/08/18/137798.html</guid><wfw:comment>http://www.blogjava.net/alex/comments/137798.html</wfw:comment><comments>http://www.blogjava.net/alex/archive/2007/08/18/137798.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alex/comments/commentRss/137798.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alex/services/trackbacks/137798.html</trackback:ping><description><![CDATA[<div class=storycontent>
<p>key words: plsql,导出数据，大数据量</p>
<p>最近的账务的项目中需要导出Excel报表，数据量比较大,解决方案如下　：</p>
<p>1.通过plsql在服务器端查询出符合要求的纪录，然后直接写到文本文件中</p>
<p>2.在web端通过流的方式读文本文件，通过POI写到Excel,将生成的Excel流写到respoonse实现下载</p>
<p>这样做的好处是不必一次性将满足条件的纪录全部取出来，而是通过流的方式．</p>
<p>这个方式原来在处理Blob类型的字段时有直接的getStream来支持的，这次普通的数据只好通过文件的方式来实现.</p>
<p>贴一段sample的代码</p>
<p><code><br></code></p>
<div class=code_title>sql 代码</div>
<div class=dp-highlighter>
<div class=bar>&nbsp;</div>
<ol class=dp-sql>
    <li class=alt><span><span class=keyword>create</span><span>&nbsp;</span><span class=op>or</span><span>&nbsp;</span><span class=func>replace</span><span>&nbsp;</span><span class=keyword>procedure</span><span>&nbsp;alex_table_to_txt(filepath&nbsp;varchar2,filename&nbsp;varchar2)&nbsp;</span><span class=keyword>is</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class=comment>--var</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=alt><span>v1&nbsp;alex2.<span class=keyword>name</span><span>%type;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>v2&nbsp;alex2.address%type;&nbsp;&nbsp;</span></li>
    <li class=alt><span>v3&nbsp;alex2.groupname%type;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class=alt><span><span class=keyword>output</span><span>&nbsp;varchar2(200);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class=alt><span><span class=comment>--file&nbsp;var</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>file_handle&nbsp;UTL_FILE.FILE_TYPE;&nbsp;&nbsp;</span></li>
    <li class=alt><span>&nbsp;&nbsp;</span></li>
    <li class=""><span><span class=keyword>cursor</span><span>&nbsp;readtable&nbsp;</span><span class=keyword>is</span><span>&nbsp;</span><span class=keyword>select</span><span>&nbsp;t.</span><span class=keyword>name</span><span>,t.address,t.groupname&nbsp;</span><span class=keyword>from</span><span>&nbsp;alex2&nbsp;t;&nbsp;&nbsp;</span></span></li>
    <li class=alt><span><span class=keyword>begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>file_handle:=utl_file.fopen(filepath,filename,'w',6000);&nbsp;&nbsp;</span></li>
    <li class=alt><span><span class=keyword>open</span><span>&nbsp;readtable;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class=alt><span>loop&nbsp;&nbsp;</span></li>
    <li class=""><span><span class=keyword>fetch</span><span>&nbsp;readtable&nbsp;</span><span class=keyword>into</span><span>&nbsp;v1,v2,v3;&nbsp;&nbsp;</span></span></li>
    <li class=alt><span>exit&nbsp;<span class=keyword>when</span><span>&nbsp;readtable%notfound;&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class=keyword>output</span><span>:=v1&nbsp;||&nbsp;','&nbsp;||&nbsp;v2&nbsp;||&nbsp;','&nbsp;||&nbsp;v3&nbsp;;&nbsp;&nbsp;</span></span></li>
    <li class=alt><span>utl_file.put_line(file_handle,<span class=keyword>output</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class=alt><span><span class=keyword>end</span><span>&nbsp;loop;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class=alt><span><span class=keyword>close</span><span>&nbsp;readtable;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>utl_file.fclose(file_handle);&nbsp;&nbsp;</span></li>
    <li class=alt><span><span class=keyword>end</span><span>&nbsp;alex_table_to_txt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>/&nbsp;&nbsp;</span></li>
</ol>
</div>
<br>
<p>&nbsp;</p>
<p>欢迎讨论你的方案</p>
</div>
<img src ="http://www.blogjava.net/alex/aggbug/137798.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alex/" target="_blank">Alex</a> 2007-08-18 12:46 <a href="http://www.blogjava.net/alex/archive/2007/08/18/137798.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 自动启动命令</title><link>http://www.blogjava.net/alex/archive/2007/06/12/123519.html</link><dc:creator>Alex</dc:creator><author>Alex</author><pubDate>Tue, 12 Jun 2007 01:13:00 GMT</pubDate><guid>http://www.blogjava.net/alex/archive/2007/06/12/123519.html</guid><wfw:comment>http://www.blogjava.net/alex/comments/123519.html</wfw:comment><comments>http://www.blogjava.net/alex/archive/2007/06/12/123519.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alex/comments/commentRss/123519.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alex/services/trackbacks/123519.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">echo&nbsp;"begin&nbsp;to&nbsp;start&nbsp;oracle"<br>lsnrctl&nbsp;start<br>sqlplus&nbsp;/nolog&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">&lt;EOF<br></span><span style="COLOR: #ff0000">connect&nbsp;/as&nbsp;sysdba<br>startup<br>exit<br>exit<br>echo&nbsp;"oracle&nbsp;have&nbsp;started"</span></div>
<img src ="http://www.blogjava.net/alex/aggbug/123519.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alex/" target="_blank">Alex</a> 2007-06-12 09:13 <a href="http://www.blogjava.net/alex/archive/2007/06/12/123519.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle查询约束</title><link>http://www.blogjava.net/alex/archive/2007/04/11/109932.html</link><dc:creator>Alex</dc:creator><author>Alex</author><pubDate>Wed, 11 Apr 2007 08:09:00 GMT</pubDate><guid>http://www.blogjava.net/alex/archive/2007/04/11/109932.html</guid><wfw:comment>http://www.blogjava.net/alex/comments/109932.html</wfw:comment><comments>http://www.blogjava.net/alex/archive/2007/04/11/109932.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alex/comments/commentRss/109932.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alex/services/trackbacks/109932.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/alex/archive/2007/04/11/109932.html'>阅读全文</a><img src ="http://www.blogjava.net/alex/aggbug/109932.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alex/" target="_blank">Alex</a> 2007-04-11 16:09 <a href="http://www.blogjava.net/alex/archive/2007/04/11/109932.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[讨论]上传文件放在哪里比较合适?</title><link>http://www.blogjava.net/alex/archive/2007/01/31/96831.html</link><dc:creator>Alex</dc:creator><author>Alex</author><pubDate>Wed, 31 Jan 2007 01:06:00 GMT</pubDate><guid>http://www.blogjava.net/alex/archive/2007/01/31/96831.html</guid><wfw:comment>http://www.blogjava.net/alex/comments/96831.html</wfw:comment><comments>http://www.blogjava.net/alex/archive/2007/01/31/96831.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/alex/comments/commentRss/96831.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alex/services/trackbacks/96831.html</trackback:ping><description><![CDATA[key words: 上传文件<br><br><em><font color=#800080>目里面有上传文件的需求,我想了一下不外乎下面两种处理方法: </font></em>
<p><em><font color=#800080>1. 在数据库表中建立一个blob字段存放用户上传文件. <br>2. 在服务器上建立一个文件夹保存用户上传文件,数据库表中只存放该文<wbr>件的url地址.</wbr></font></em></p>
<p><em><font color=#800080>我本人现在比较倾向于第2种方案, 主要原因是担心方案1的效率（我用的是mysql数据库）。 但是处理过程中除了维护数据库中表的字段还要维护上传的文件<wbr>,稍微麻烦一点。</wbr></font></em></p>
<p><em><font color=#800080>大家在项目里面又是怎么做呢？ 给我点建议！谢谢</font></em></p>
<br>讨论内容见: <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.javaeye.com/topic/18515?page=1" target=_blank>javaeye</a><br><br>robin更建议第二种方案，放在数据库中主要的问题是 AppServer吃不消，开销比较大.<br><br>上面是摘录，不过我们这里用的是Oracle9i AS,在Oracle的协作套间里一般文档或者上传的文件都是保存在数据库里，还把这个特性作为Oracle 与别的协作套件之间不同的卖点。<br><br>大家以为如何? 我直觉是Oracle的DB和oc4j的AppServer对付这个似乎没有开销上的担心，但是没有实际检测过。 <br><br>换句话说，文件的管理是放在文件夹里方便还是数据库里方便? 有点为难 <br><br>update (2007-5-13):<br><span style="COLOR: #0000ff">还有一种方案结合了数据库和IO，我认为比较可行，就是文件存在数据库，但是下载的时候第一次从数据库下载，然后第一次这个文件保存在一个临时文件夹下面，以后每次下载的时候总是先检查此临时文件夹，如果已经存在则直接下载，如果没有则从数据库重复这个动作。当然，保存在临时文件夹下的文件的命名需要唯一，这个应该没有问题。</span>
<img src ="http://www.blogjava.net/alex/aggbug/96831.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alex/" target="_blank">Alex</a> 2007-01-31 09:06 <a href="http://www.blogjava.net/alex/archive/2007/01/31/96831.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>