copy.l
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:6k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. ." This is -*-nroff-*-
  2. ." XXX standard disclaimer belongs here....
  3. ." $Header: /usr/local/cvsroot/pgsql/src/man/Attic/copy.l,v 1.7 1999/02/02 03:45:31 momjian Exp $
  4. .TH COPY SQL 11/05/95 PostgreSQL PostgreSQL
  5. .SH NAME
  6. copy - copy data to or from a class from or to a Unix file.
  7. .SH SYNOPSIS
  8. .nf
  9. fBcopyfP [fBbinaryfP] classname [fBwith oidsfP]
  10. fBtofP|fBfrom 'fPfilenamefB'fP|fBstdinfR|fBstdoutfR
  11. [fBusing delimiters 'fPdelimfB'fP]
  12. .fi
  13. .SH DESCRIPTION
  14. .BR Copy
  15. moves data between Postgres classes and standard Unix files.  The
  16. keyword
  17. .BR binary
  18. changes the behavior of field formatting, as described below.
  19. .IR Classname
  20. is the name of an existing class.
  21. The keyword
  22. .BR "with oids"
  23. copies the internal unique object id (OID) for each row.
  24. .IR Classname
  25. is the name of an existing class.
  26. .IR Filename
  27. is the absolute Unix pathname of the file.  In place of a filename, the
  28. keywords
  29. .BR "stdin" " and " "stdout"
  30. can be used so that input to
  31. .BR copy
  32. can be written by a Libpq application and output from the
  33. .BR copy
  34. command can be read by a Libpq application.
  35. .PP
  36. The
  37. .BR binary
  38. keyword will force all data to be stored/read as binary objects rather
  39. than as ASCII text.  It is somewhat faster than the normal
  40. .BR copy
  41. command, but is not generally portable, and the files generated are
  42. somewhat larger, although this factor is highly dependent on the data
  43. itself.
  44. By default, a ASCII
  45. .BR copy
  46. uses a tab (\t) character as a delimiter.  The delimiter may also be changed
  47. to any other single-character with the use of 
  48. .BR "using delimiters" .
  49. Characters in data fields which happen to match the delimiter character
  50. will be quoted.
  51. .PP
  52. You must have read access on any class whose values are read by the
  53. .BR copy
  54. command, and either write or append access to a class to which values
  55. are being appended by the
  56. .BR copy
  57. command.
  58. .SH FORMAT OF OUTPUT FILES
  59. .SS "ASCII COPY FORMAT"
  60. When
  61. .BR copy
  62. is used without the
  63. .BR binary
  64. keyword, the file generated will have each instance on a line, with
  65. each attribute separated by the delimiter character.  Embedded delimiter
  66. characters will be preceeded by a backslash character (\).  The
  67. attribute values themselves are strings generated by the output function
  68. associated with each attribute type.  The output function for a type
  69. should not try to generate the backslash character; this will be handled
  70. by 
  71. .BR copy
  72. itself.
  73. .PP
  74. The actual format for each instance is
  75. .nf
  76. <attr1><tab><attr2><tab>...<tab><attrn><newline>
  77. .fi
  78. The oid is placed on the beginning of the line if specified.
  79. .PP
  80. If 
  81. .BR copy
  82. is sending its output to standard output instead of a file, it will
  83. send a backslash(\) and a period (.) followed immediately by a newline,
  84. on a line by themselves, when it is done.  Similarly, if
  85. .BR copy
  86. is reading from standard input, it will expect a backslash (\) and
  87. a period (.) followed
  88. by a newline, as the first three characters on a line, to denote
  89. end-of-file.  However,
  90. .BR copy
  91. will terminate (followed by the backend itself) if a true EOF is
  92. encountered.
  93. .PP
  94. The backslash character has special meaning.
  95. .BR NULL
  96. attributes are represented as \N.
  97. A literal backslash character is represented as two consecutive backslashes.
  98. A literal tab character is represented as a backslash and a tab.
  99. A literal newline character is represented as a backslash and a newline.
  100. When loading ASCII data not generated by PostgreSQL, you will need to
  101. convert backslash characters (\) to double-backslashes (\\) so
  102. they are loaded properly.
  103. .SS "BINARY COPY FORMAT"
  104. In the case of
  105. .BR "copy binary" ,
  106. the first four bytes in the file will be the number of instances in
  107. the file.  If this number is
  108. .IR zero,
  109. the
  110. .BR "copy binary"
  111. command will read until end of file is encountered.  Otherwise, it
  112. will stop reading when this number of instances has been read.
  113. Remaining data in the file will be ignored.
  114. .PP
  115. The format for each instance in the file is as follows.  Note that
  116. this format must be followed
  117. .BR EXACTLY .
  118. Unsigned four-byte integer quantities are called uint32 in the below
  119. description.
  120. .nf
  121. The first value is:
  122. uint32 number of tuples
  123. then for each tuple:
  124. uint32 total length of data segment
  125. uint32 oid (if specified)
  126. uint32 number of null attributes
  127. [uint32 attribute number of first null attribute
  128.  ...
  129.  uint32 attribute number of nth null attribute],
  130. <data segment>
  131. .fi
  132. .bp
  133. .SS "ALIGNMENT OF BINARY DATA"
  134. On Sun-3s, 2-byte attributes are aligned on two-byte boundaries, and
  135. all larger attributes are aligned on four-byte boundaries.  Character
  136. attributes are aligned on single-byte boundaries.  On other machines,
  137. all attributes larger than 1 byte are aligned on four-byte boundaries.
  138. Note that variable length attributes are preceded by the attribute's
  139. length; arrays are simply contiguous streams of the array element
  140. type.
  141. .SH "SEE ALSO"
  142. insert(l), create_table(l), vacuum(l), libpq.
  143. .SH BUGS
  144. Files used as arguments to the
  145. .BR copy
  146. command must reside on or be accessible to the the database server
  147. machine by being either on local disks or a networked file system.
  148. .PP
  149. .BR Copy
  150. stops operation at the first error.  This should not lead to problems
  151. in the event of a
  152. .BR "copy from" ,
  153. but the target relation will, of course, be partially modified in a
  154. .BR "copy to" .
  155. The 
  156. .IR vacuum(l)
  157. query should be used to clean up after a failed
  158. .BR "copy" .
  159. .PP
  160. Because Postgres operates out of a different directory than the user's
  161. working directory at the time Postgres is invoked, the result of copying
  162. to a file *(lqfoo*(rq (without additional path information) may
  163. yield unexpected results for the naive user.  In this case,
  164. *(lqfoo*(rq will wind up in
  165. .SM $PGDATAc
  166. /foo.  In general, the full pathname should be used when specifying
  167. files to be copied.