# PGXC_COPY_ERROR_LOG
PGXC_COPY_ERROR_LOG系统视图用于捕捉COPY FROM过程的相关错误行，以便后续查阅。
表1PGXC_COPY_ERROR_LOG字段 
| 名称         | 类型                       | 描述                                              |
|:---|:---|:---|
| relname   | text                      | 表名称。以模式名.表名形式显示。                                |
| begintime | timestamp with time zone | 出现数据格式错误的时间。                                 |
| filename   | text                      | 出现数据格式错误的数据源文件名。                              |
| lineno     | bigint                    | 在数据源文件中，出现数据格式错误的行号。                            |
| rawrecord   | text                       | 在数据源文件中，出现数据格式错误的原始记录。                       |
| detail   | text                       | 详细错误信息。                                          |
| custom_id | text                   | 关联的COPY语法中copy_custom_id输入的值，表示本次导入的自定义标识信息。 |
   
![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 查询pg_catalog.pgxc_copy_error_log系统视图时，显示所有CN和DN节点上pg_catalog.gs_copy_error_log表中的数据。等同于执行以下语句：
  ```
  SELECT * FROM pg_catalog.pgxc_copy_error_func(false, false);
  ```
  
- 视图默认不对pg_catalog.gs_copy_error_old表做UNION ALL操作，如果想要兼容查询pg_catalog.gs_copy_error_old表中的数据，可以执行以下语句进行查询：
  ```
  SELECT * FROM pg_catalog.pgxc_copy_error_func(true, false);
  ```
  
- 从此版本开始，pgxc_copy_error_log由系统表改成系统视图，因此无法对其执行TRUNCATE操作进行清理，执行TRUNCATE操作会抛出无法对视图进行此操作的相关报错。清理copy相关错误数据的两种情况如下。
  - 非三权分立下，需要系统管理员用户执行以下语句进行清理：
    ```
    TRUNCATE TABLE pg_catalog.gs_copy_error_log;
    ```
    
  
  - 三权分立下，使用普通用户清理同名schema下的pgxc_copy_error_log表即可。
   
- 三权分立机制下，错误日志信息不会记录至pg_catalog.pgxc_copy_error_log和pg_catalog.gs_copy_error_log。若用户load_user需记录错误信息，需通过以下语句在其同名Schema下创建：
  ```
  CREATE TABLE load_user.pgxc_copy_error_log (relname varchar, begintime timestamptz, filename varchar, lineno int8, rawrecord text, detail text); 
  CREATE INDEX copy_error_log_relname_idx ON load_user.pgxc_copy_error_log(relname);
  ```
  （可选）在表上添加custom_id列：
  ```
  ALTER TABLE load_user.pgxc_copy_error_log ADD COLUMN custom_id varchar(64);
  ```
  
 
