COPY LOCAL 拒绝和异常文件

调用 COPY LOCAL(或 COPY LOCAL FROM STDIN)不会自动创建已拒绝的数据和异常文件。此行为与使用 COPY 不同,使用 COPY 将自动保存两种文件,而不管是否使用可选 REJECTED DATAEXCEPTIONS 参数显式指定任一文件。

将 REJECTED DATA 和 EXCEPTIONS 参数与 COPY LOCAL 和 COPY LOCAL FROM STDIN 结合使用,可将相应输出文件保存到客户端。如果使用这些选项,则不会保留已拒绝的数据解析事件(以及描述这些内容的异常文件),即使发生这些事件。

可以使用 COPY LOCAL(或 COPY LOCAL FROM STDIN)加载多个输入文件。如果还使用 REJECTED DATAEXCEPTIONS 选项,该语句会将已拒绝的行和异常写入不同文件。各个文件中分别包含所有已拒绝的行和相应异常,而不管加载了多少输入文件。

如果 COPY LOCAL 不拒绝任何行,则不会创建任何一个文件。

指定拒绝的数据和异常文件

若要将任何已拒绝的数据及异常保存到文件中:

  1. 在 COPY LOCAL(和 COPY LOCAL FROM STDIN)语句中,分别使用 REJECTED DATA 'path'EXCEPTIONS 'path' 参数。

  2. 为这两个选项指定两个不同的文件名。不能为 REJECTED DATAEXCEPTIONS 使用一个文件。

  3. 调用 COPY LOCAL 或 COPY LOCAL FROM STDIN 时,指定的文件无需预先存在。如果预先存在,COPY LOCAL 必须能够覆盖这些文件。

可以通过 vsql 变量指定路径和文件名:

\set rejected ../except_reject/copyLocal.rejected
\set exceptions ../except_reject/copyLocal.exceptions

使用 COPY LOCAL 或 COPY LOCAL FROM STDIN 语句时,使用相应参数为文件指定变量名称:

=> COPY large_tbl FROM LOCAL rejected data :rejected exceptions :exceptions;
=> COPY large_tbl FROM LOCAL STDIN rejected data :rejected exceptions :exceptions;