<!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/copy.sgml,v 1.58 2004/11/15 06:32:15 neilc Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/copy.sgml,v 1.59 2004/11/17 02:50:06 neilc Exp $
PostgreSQL documentation
-->
</para>
<para>
- It is strongly recommended that applications generating COPY data convert
+ It is strongly recommended that applications generating <command>COPY</command> data convert
data newlines and carriage returns to the <literal>\n</> and
<literal>\r</> sequences respectively. At present it is
possible to represent a data carriage return by a backslash and carriage
return, and to represent a data newline by a backslash and newline.
However, these representations might not be accepted in future releases.
- They are also highly vulnerable to corruption if the COPY file is
+ They are also highly vulnerable to corruption if the <command>COPY</command> file is
transferred across different machines (for example, from Unix to Windows
or vice versa).
</para>
<para>
In general, the <literal>CSV</> format has no way to distinguish a
- <literal>NULL</> from an empty string.
- <productname>PostgreSQL</productname>'s COPY handles this by
- quoting. A <literal>NULL</> is output as the <literal>NULL</> string
- and is not quoted, while a data value matching the <literal>NULL</> string
- is quoted. Therefore, using the default settings, a <literal>NULL</> is
- written as an unquoted empty string, while an empty string is
- written with double quotes (<literal>""</>). Reading values follows
- similar rules. You can use <literal>FORCE NOT NULL</> to prevent <literal>NULL</>
- input comparisons for specific columns.
+ <literal>NULL</> value from an empty string.
+ <productname>PostgreSQL</>'s <command>COPY</> handles this by
+ quoting. A <literal>NULL</> is output as the <literal>NULL</>
+ string and is not quoted, while a data value matching the
+ <literal>NULL</> string is quoted. Therefore, using the default
+ settings, a <literal>NULL</> is written as an unquoted empty
+ string, while an empty string is written with double quotes
+ (<literal>""</>). Reading values follows similar rules. You can
+ use <literal>FORCE NOT NULL</> to prevent <literal>NULL</> input
+ comparisons for specific columns.
</para>
<note>
CSV mode will both recognize and produce CSV files with quoted
values containing embedded carriage returns and line feeds. Thus
the files are not strictly one line per table row like text-mode
- files.
+ files. However, <productname>PostgreSQL</productname> will reject
+ <command>COPY</command> input if any fields contain embedded line
+ end character sequences that do not match the line ending
+ convention used in the CSV file itself. It is generally safer to
+ import data containing embedded line end characters using the
+ text or binary formats rather than CSV.
</para>
</note>