doc-exports/docs/dws/dev/dws_06_0054.html
Lu, Huayi a24ca60074 DWS DEVELOPER 811 version
Reviewed-by: Hasko, Vladimir <vladimir.hasko@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2023-01-19 13:37:49 +00:00

171 lines
20 KiB
HTML

<a name="EN-US_TOPIC_0000001145830819"></a><a name="EN-US_TOPIC_0000001145830819"></a>
<h1 class="topictitle1">Universal File Access Functions</h1>
<div id="body1553151203303"><p id="EN-US_TOPIC_0000001145830819__afa2707e79aa64b99a7034266c7c7c767">Universal file access functions provide local access interfaces for files on a database server. Only files in the database cluster directory and the <strong id="EN-US_TOPIC_0000001145830819__b197068484536">log_directory</strong> directory can be accessed. Use a relative path for files in the cluster directory, and a path matching the <strong id="EN-US_TOPIC_0000001145830819__b8423527069539">log_directory</strong> configuration setting for log files. Only database system administrators can use these functions.</p>
<ul id="EN-US_TOPIC_0000001145830819__u41fbdc2711314c11a099fea92b1b8daf"><li id="EN-US_TOPIC_0000001145830819__l3417ab04ea8540ba87efa2188babd92a">pg_ls_dir(dirname text)<p id="EN-US_TOPIC_0000001145830819__af8ae488f300248209ad87c05c7db2b69"><a name="EN-US_TOPIC_0000001145830819__l3417ab04ea8540ba87efa2188babd92a"></a><a name="l3417ab04ea8540ba87efa2188babd92a"></a>Description: Lists files in a directory.</p>
<p id="EN-US_TOPIC_0000001145830819__a2fde045ce0514a0a81c793b896fcb1fb">Return type: setof text</p>
<p id="EN-US_TOPIC_0000001145830819__a75aec706d4a6409eba3a7514baebe3f0">Note: <strong id="EN-US_TOPIC_0000001145830819__en-us_topic_0058965547_b8423527069118">pg_ls_dir</strong> returns all the names in the specified directory, except the special entries "." and "..".</p>
<p id="EN-US_TOPIC_0000001145830819__aa59679da6f484d10a511a4f2528d0818">For example:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145830819__s102e4b65b196460fabec822eccf45bac"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span>
<span class="normal">32</span>
<span class="normal">33</span>
<span class="normal">34</span>
<span class="normal">35</span>
<span class="normal">36</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">pg_ls_dir</span><span class="p">(</span><span class="s1">'./'</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_ls_dir</span><span class="w"> </span>
<span class="c1">----------------------</span>
<span class="w"> </span><span class="p">.</span><span class="n">postgresql</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">swp</span><span class="w"></span>
<span class="w"> </span><span class="n">postgresql</span><span class="p">.</span><span class="n">conf</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_tblspc</span><span class="w"></span>
<span class="w"> </span><span class="n">PG_VERSION</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_ident</span><span class="p">.</span><span class="n">conf</span><span class="w"></span>
<span class="w"> </span><span class="n">core</span><span class="w"></span>
<span class="w"> </span><span class="n">server</span><span class="p">.</span><span class="n">crt</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_serial</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_twophase</span><span class="w"></span>
<span class="w"> </span><span class="n">postgresql</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="k">lock</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_stat_tmp</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_notify</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_subtrans</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_ctl</span><span class="p">.</span><span class="k">lock</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_xlog</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_clog</span><span class="w"></span>
<span class="w"> </span><span class="n">base</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_snapshots</span><span class="w"></span>
<span class="w"> </span><span class="n">postmaster</span><span class="p">.</span><span class="n">opts</span><span class="w"></span>
<span class="w"> </span><span class="n">postmaster</span><span class="p">.</span><span class="n">pid</span><span class="w"></span>
<span class="w"> </span><span class="n">server</span><span class="p">.</span><span class="k">key</span><span class="p">.</span><span class="n">rand</span><span class="w"></span>
<span class="w"> </span><span class="n">server</span><span class="p">.</span><span class="k">key</span><span class="p">.</span><span class="n">cipher</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_multixact</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_errorinfo</span><span class="w"></span>
<span class="w"> </span><span class="n">server</span><span class="p">.</span><span class="k">key</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_hba</span><span class="p">.</span><span class="n">conf</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_replslot</span><span class="w"></span>
<span class="w"> </span><span class="p">.</span><span class="n">pg_hba</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="n">swp</span><span class="w"></span>
<span class="w"> </span><span class="n">cacert</span><span class="p">.</span><span class="n">pem</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_hba</span><span class="p">.</span><span class="n">conf</span><span class="p">.</span><span class="k">lock</span><span class="w"></span>
<span class="w"> </span><span class="k">global</span><span class="w"></span>
<span class="w"> </span><span class="n">gaussdb</span><span class="p">.</span><span class="k">state</span><span class="w"></span>
<span class="p">(</span><span class="mi">32</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001145830819__l8a2100a5bff5403597b6d84d11d365c8">pg_read_file(filename text, offset bigint, length bigint)<p id="EN-US_TOPIC_0000001145830819__aa037dc37683a4711b5269d62f2e44edf"><a name="EN-US_TOPIC_0000001145830819__l8a2100a5bff5403597b6d84d11d365c8"></a><a name="l8a2100a5bff5403597b6d84d11d365c8"></a>Description: Returns the content of a text file.</p>
<p id="EN-US_TOPIC_0000001145830819__a44283990c6ca4aac84b0ff7208bf59b7">Return type: text</p>
<p id="EN-US_TOPIC_0000001145830819__aa485b9c536934c6d83fe9095fa8e540c">Note: <strong id="EN-US_TOPIC_0000001145830819__b13486104112349">pg_read_file</strong> returns part of a text file. It can return a maximum of <em id="EN-US_TOPIC_0000001145830819__i842352697193723">length</em> bytes from <em id="EN-US_TOPIC_0000001145830819__i842352697193738">offset</em>. The actual size of fetched data is less than <em id="EN-US_TOPIC_0000001145830819__i1367712584193834">length</em> if the end of the file is reached first. If <strong id="EN-US_TOPIC_0000001145830819__b1472816124361">offset</strong> is negative, it is the length rolled back from the file end. If <strong id="EN-US_TOPIC_0000001145830819__b84235270691618">offset</strong> and <strong id="EN-US_TOPIC_0000001145830819__b84235270691622">length</strong> are omitted, the entire file is returned.</p>
<p id="EN-US_TOPIC_0000001145830819__aa0e3083feed34b7bb0b3baa5b716893f">For example:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145830819__sc62a065dd74c4e25b6dee4ab9e055823"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">pg_read_file</span><span class="p">(</span><span class="s1">'postmaster.pid'</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">100</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">pg_read_file</span><span class="w"> </span>
<span class="c1">---------------------------------------</span>
<span class="w"> </span><span class="mi">53078</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">/</span><span class="n">srv</span><span class="o">/</span><span class="n">BigData</span><span class="o">/</span><span class="n">hadoop</span><span class="o">/</span><span class="n">data1</span><span class="o">/</span><span class="n">coordinator</span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="mi">1500022474</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="mi">253088000</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">run</span><span class="o">/</span><span class="n">FusionInsight</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="n">localhost</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="mi">2</span><span class="w"></span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001145830819__l4246db84fa1f43b690fc819b0fdd535c">pg_read_binary_file(filename text [, offset bigint, length bigint,missing_ok boolean])<p id="EN-US_TOPIC_0000001145830819__a2f30bc698d204867a5c3ab02234527c8"><a name="EN-US_TOPIC_0000001145830819__l4246db84fa1f43b690fc819b0fdd535c"></a><a name="l4246db84fa1f43b690fc819b0fdd535c"></a>Description: Returns the content of a binary file.</p>
<p id="EN-US_TOPIC_0000001145830819__a8a8ac39927f94ef6a43690e3c6c9d74c">Return type: bytea</p>
<p id="EN-US_TOPIC_0000001145830819__ad81cf5dd13ef45a3950850f35be80d03">Note: <strong id="EN-US_TOPIC_0000001145830819__b842352706113651">pg_read_binary_file</strong> is similar to <strong id="EN-US_TOPIC_0000001145830819__b842352706113655">pg_read_file</strong>, except that the result is a <strong id="EN-US_TOPIC_0000001145830819__b84235270611374">bytea</strong> value; accordingly, no encoding checks are performed. In combination with the <strong id="EN-US_TOPIC_0000001145830819__en-us_topic_0058965547_b8423527069218">convert_from</strong> function, this function can be used to read a file in a specified encoding:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145830819__sec71bd80ed054d268f5ff950a2b17aee"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">convert_from</span><span class="p">(</span><span class="n">pg_read_binary_file</span><span class="p">(</span><span class="s1">'filename'</span><span class="p">),</span><span class="w"> </span><span class="s1">'UTF8'</span><span class="p">);</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
</li><li id="EN-US_TOPIC_0000001145830819__lbbbe4d4bb8bd4f029de39a19060d5d6b">pg_stat_file(filename text)<p id="EN-US_TOPIC_0000001145830819__adc854cc55b964d3b99231daf88a84da5"><a name="EN-US_TOPIC_0000001145830819__lbbbe4d4bb8bd4f029de39a19060d5d6b"></a><a name="lbbbe4d4bb8bd4f029de39a19060d5d6b"></a>Description: Returns status information about a file.</p>
<p id="EN-US_TOPIC_0000001145830819__a1a99079876024b20b05132940655707f">Return type: record</p>
<p id="EN-US_TOPIC_0000001145830819__aba04a3e3d20c4ddf9e405a00d015b7a5">Note: <strong id="EN-US_TOPIC_0000001145830819__b84235270692256">pg_stat_file</strong> returns a record containing the file size, last access timestamp, last modification timestamp, last file status change timestamp, and a <strong id="EN-US_TOPIC_0000001145830819__b84235270692331"><span id="EN-US_TOPIC_0000001145830819__text1687253615221">boolean</span></strong> value indicating if it is a directory. Typical use cases are as follows:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145830819__s5c41be94c57b45e48b33e200115d7a96"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_file</span><span class="p">(</span><span class="s1">'filename'</span><span class="p">);</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145830819__sdaacd89b2ac34753a13b9e98d649a0c4"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="p">(</span><span class="n">pg_stat_file</span><span class="p">(</span><span class="s1">'filename'</span><span class="p">)).</span><span class="n">modification</span><span class="p">;</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001145830819__a279464a1af144051b61101ea08872f05">Examples:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145830819__s2973631a47a345abbd62b1493bc85d01"></div>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145830819__s8753d4c6d98f46cc8d2f9e53cfd90c66"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span>
<span class="normal">8</span>
<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_file</span><span class="p">(</span><span class="s1">'postmaster.pid'</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span>
<span class="w"> </span><span class="k">size</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">access</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">modification</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">change</span><span class="w"> </span>
<span class="o">|</span><span class="w"> </span><span class="n">creation</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">isdir</span><span class="w"> </span>
<span class="c1">------+------------------------+------------------------+------------------------</span>
<span class="o">+</span><span class="c1">----------+-------</span>
<span class="w"> </span><span class="mi">117</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2017</span><span class="o">-</span><span class="mi">06</span><span class="o">-</span><span class="mi">05</span><span class="w"> </span><span class="mi">11</span><span class="p">:</span><span class="mi">06</span><span class="p">:</span><span class="mi">34</span><span class="o">+</span><span class="mi">08</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2017</span><span class="o">-</span><span class="mi">06</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">17</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">08</span><span class="o">+</span><span class="mi">08</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2017</span><span class="o">-</span><span class="mi">06</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">17</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">08</span><span class="o">+</span><span class="mi">08</span><span class="w"> </span>
<span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">f</span><span class="w"></span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001145830819__s9e53513b4d8941159d386652b6783c59"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="p">(</span><span class="n">pg_stat_file</span><span class="p">(</span><span class="s1">'postmaster.pid'</span><span class="p">)).</span><span class="n">modification</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">modification</span><span class="w"> </span>
<span class="c1">------------------------</span>
<span class="w"> </span><span class="mi">2017</span><span class="o">-</span><span class="mi">06</span><span class="o">-</span><span class="mi">01</span><span class="w"> </span><span class="mi">17</span><span class="p">:</span><span class="mi">18</span><span class="p">:</span><span class="mi">08</span><span class="o">+</span><span class="mi">08</span><span class="w"></span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
</pre></div></td></tr></table></div>
</div>
</li></ul>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0052.html">System Administration Functions</a></div>
</div>
</div>