home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _b2d8395b94e36f16d02aa8201c0985b5 < prev    next >
Text File  |  2000-03-23  |  8KB  |  209 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>DBD::File - Base class for writing DBI drivers for plain files</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> DBD::File - Base class for writing DBI drivers for plain files</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <UL>
  26.  
  27.         <LI><A HREF="#metadata">Metadata</A></LI>
  28.         <LI><A HREF="#driver private methods">Driver private methods</A></LI>
  29.     </UL>
  30.  
  31.     <LI><A HREF="#todo">TODO</A></LI>
  32.     <LI><A HREF="#known bugs">KNOWN BUGS</A></LI>
  33.     <LI><A HREF="#author and copyright">AUTHOR AND COPYRIGHT</A></LI>
  34.     <LI><A HREF="#see also">SEE ALSO</A></LI>
  35. </UL>
  36. <!-- INDEX END -->
  37.  
  38. <HR>
  39. <P>
  40. <H1><A NAME="name">NAME</A></H1>
  41. <P>DBD::File - Base class for writing DBI drivers for plain files</P>
  42. <P>
  43. <HR>
  44. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  45. <UL>
  46. <LI>Linux</LI>
  47. <LI>Solaris</LI>
  48. <LI>Windows</LI>
  49. </UL>
  50. <HR>
  51. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  52. <PRE>
  53.     use DBI;
  54.     $dbh = DBI->connect("DBI:<A HREF="File:f_dir=/home/joe/csvdb"">File:f_dir=/home/joe/csvdb"</A>;)
  55.         or die "Cannot connect: " . $DBI::errstr;
  56.     $sth = $dbh->prepare("CREATE TABLE a (id INTEGER, name CHAR(10))")
  57.         or die "Cannot prepare: " . $dbh->errstr();
  58.     $sth->execute() or die "Cannot execute: " . $sth->errstr();
  59.     $sth->finish();
  60.     $dbh->disconnect();</PRE>
  61. <P>
  62. <HR>
  63. <H1><A NAME="description">DESCRIPTION</A></H1>
  64. <P>The DBD::File module is not a true DBI driver, but an abstract
  65. base class for deriving concrete DBI drivers from it. The implication is,
  66. that these drivers work with plain files, for example CSV files or
  67. INI files. The module is based on the SQL::Statement module, a simple
  68. SQL engine.</P>
  69. <P>See <EM>DBI(3)</EM> for details on DBI, <A HREF="../../../SQL/Statement(3).html">the SQL::Statement(3) manpage</A> for details on
  70. SQL::Statement and <A HREF="../../../DBD/CSV(3).html">the DBD::CSV(3) manpage</A> or <A HREF="../../../DBD/IniFile(3).html">the DBD::IniFile(3) manpage</A> for example
  71. drivers.</P>
  72. <P>
  73. <H2><A NAME="metadata">Metadata</A></H2>
  74. <P>The following attributes are handled by DBI itself and not by DBD::File,
  75. thus they all work like expected:</P>
  76. <PRE>
  77.     Active
  78.     ActiveKids
  79.     CachedKids
  80.     CompatMode             (Not used)
  81.     InactiveDestroy
  82.     Kids
  83.     PrintError
  84.     RaiseError
  85.     Warn                   (Not used)</PRE>
  86. <P>The following DBI attributes are handled by DBD::File:</P>
  87. <DL>
  88. <DT><STRONG><A NAME="item_AutoCommit">AutoCommit</A></STRONG><BR>
  89. <DD>
  90. Always on
  91. <P></P>
  92. <DT><STRONG><A NAME="item_ChopBlanks">ChopBlanks</A></STRONG><BR>
  93. <DD>
  94. Works
  95. <P></P>
  96. <DT><STRONG><A NAME="item_NUM_OF_FIELDS">NUM_OF_FIELDS</A></STRONG><BR>
  97. <DD>
  98. Valid after <CODE>$sth-</CODE>execute>
  99. <P></P>
  100. <DT><STRONG><A NAME="item_NUM_OF_PARAMS">NUM_OF_PARAMS</A></STRONG><BR>
  101. <DD>
  102. Valid after <CODE>$sth-</CODE>prepare>
  103. <P></P>
  104. <DT><STRONG><A NAME="item_NAME">NAME</A></STRONG><BR>
  105. <DD>
  106. Valid after <CODE>$sth-</CODE>execute>; undef for Non-Select statements.
  107. <P></P>
  108. <DT><STRONG><A NAME="item_NULLABLE">NULLABLE</A></STRONG><BR>
  109. <DD>
  110. Not really working, always returns an array ref of one's, as DBD::CSV
  111. doesn't verify input data. Valid after <CODE>$sth-</CODE>execute>; undef for
  112. Non-Select statements.
  113. <P></P></DL>
  114. <P>These attributes and methods are not supported:</P>
  115. <PRE>
  116.     bind_param_inout
  117.     CursorName
  118.     LongReadLen
  119.     LongTruncOk</PRE>
  120. <P>Additional to the DBI attributes, you can use the following dbh
  121. attribute:</P>
  122. <DL>
  123. <DT><STRONG><A NAME="item_f_dir">f_dir</A></STRONG><BR>
  124. <DD>
  125. This attribute is used for setting the directory where CSV files are
  126. opened. Usually you set it in the dbh, it defaults to the current
  127. directory (``.''). However, it is overwritable in the statement handles.
  128. <P></P></DL>
  129. <P>
  130. <H2><A NAME="driver private methods">Driver private methods</A></H2>
  131. <DL>
  132. <DT><STRONG><A NAME="item_data_sources">data_sources</A></STRONG><BR>
  133. <DD>
  134. The <A HREF="#item_data_sources"><CODE>data_sources</CODE></A> method returns a list of subdirectories of the current
  135. directory in the form ``DBI:CSV:f_dir=$dirname''.
  136. <P>If you want to read the subdirectories of another directory, use</P>
  137. <PRE>
  138.     my($drh) = DBI->install_driver("CSV");
  139.     my(@list) = $drh->data_sources('f_dir' => '/usr/local/csv_data' );</PRE>
  140. <P></P>
  141. <DT><STRONG><A NAME="item_list_tables">list_tables</A></STRONG><BR>
  142. <DD>
  143. This method returns a list of file names inside $dbh->{'f_dir'}.
  144. Example:
  145. <PRE>
  146.     my($dbh) = DBI->connect("DBI:CSV:f_dir=/usr/local/csv_data");
  147.     my(@list) = $dbh->func('list_tables');</PRE>
  148. <P>Note that the list includes all files contained in the directory, even
  149. those that have non-valid table names, from the view of SQL. See
  150. <A HREF="#creating and dropping tables">Creating and dropping tables</A> above.</P>
  151. <P></P></DL>
  152. <P>
  153. <HR>
  154. <H1><A NAME="todo">TODO</A></H1>
  155. <DL>
  156. <DT><STRONG><A NAME="item_Joins">Joins</A></STRONG><BR>
  157. <DD>
  158. The current version of the module works with single table SELECT's
  159. only, although the basic design of the SQL::Statement module allows
  160. joins and the likes.
  161. <P></P>
  162. <DT><STRONG><A NAME="item_Table_name_mapping">Table name mapping</A></STRONG><BR>
  163. <DD>
  164. Currently it is not possible to use files with names like <CODE>names.csv</CODE>.
  165. Instead you have to use soft links or rename files. As an alternative
  166. one might use, for example a dbh attribute 'table_map'. It might be a
  167. hash ref, the keys being the table names and the values being the file
  168. names.
  169. <P></P></DL>
  170. <P>
  171. <HR>
  172. <H1><A NAME="known bugs">KNOWN BUGS</A></H1>
  173. <UL>
  174. <LI>
  175. The module is using <A HREF="../../../lib/Pod/perlfunc.html#item_flock"><CODE>flock()</CODE></A> internally. However, this function is not
  176. available on all platforms. Using <A HREF="../../../lib/Pod/perlfunc.html#item_flock"><CODE>flock()</CODE></A> is disabled on MacOS and
  177. Windows 95: There's no locking at all (perhaps not so important on
  178. MacOS and Windows 95, as there's a single user anyways).
  179. <P></P></UL>
  180. <P>
  181. <HR>
  182. <H1><A NAME="author and copyright">AUTHOR AND COPYRIGHT</A></H1>
  183. <P>This module is Copyright (C) 1998 by</P>
  184. <PRE>
  185.     Jochen Wiedmann
  186.     Am Eisteich 9
  187.     72555 Metzingen
  188.     Germany</PRE>
  189. <PRE>
  190.     Email: joe@ispsoft.de
  191.     Phone: +49 7123 14887</PRE>
  192. <P>All rights reserved.</P>
  193. <P>You may distribute this module under the terms of either the GNU
  194. General Public License or the Artistic License, as specified in
  195. the Perl README file.</P>
  196. <P>
  197. <HR>
  198. <H1><A NAME="see also">SEE ALSO</A></H1>
  199. <P><EM>DBI(3)</EM>, <A HREF="../../../Text/CSV_XS(3).html">the Text::CSV_XS(3) manpage</A>, <A HREF="../../../SQL/Statement(3).html">the SQL::Statement(3) manpage</A></P>
  200. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  201. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  202. <STRONG><P CLASS=block> DBD::File - Base class for writing DBI drivers for plain files</P></STRONG>
  203. </TD></TR>
  204. </TABLE>
  205.  
  206. </BODY>
  207.  
  208. </HTML>
  209.