El comando \copy en psql permite exportar datos desde una instancia de AnalyticDB for PostgreSQL directamente a un archivo en su computadora local, sin necesidad de privilegios SUPERUSER.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una instancia de AnalyticDB for PostgreSQL en ejecución
psql instalado y configurado para conectarse a su instancia (consulte Client connection)
Data Management (DMS) no admite el comando\copy. Use psql para ejecutar\copy.
Funcionamiento
\copy es un metacomando de psql que ejecuta el comando SQL subyacente COPY, pero enruta los datos a través del cliente en lugar del servidor. En vez de que el servidor lea o escriba el archivo especificado, psql lee o escribe el archivo y transfiere los datos entre el servidor y el sistema de archivos local. Esto significa que el usuario local controla el acceso al archivo y los permisos, no el servidor de base de datos; por lo tanto, no se requiere permiso SUPERUSER.
\copy vs COPY:
|
** |
** |
|
|
Dónde se ejecuta |
Cliente psql |
Servidor de base de datos |
|
Acceso a archivos |
Sistema de archivos local (FILE, STDIN, STDOUT) |
Solo STDIN y STDOUT |
|
SUPERUSER obligatorio |
No |
Sí (para acceso FILE) |
AnalyticDB for PostgreSQL no admite el permiso SUPERUSER. Use \copy para exportar datos a archivos locales.
Sintaxis
\COPY {table [(column [, ...])] | (query)} TO {'file' | STDOUT}
[ [WITH] [OIDS] [HEADER]
[DELIMITER [ AS ] 'delimiter']
[NULL [ AS ] 'null string']
[ESCAPE [ AS ] 'escape' | 'OFF']
[CSV [QUOTE [ AS ] 'quote']
[FORCE QUOTE column [, ...]] ]
[IGNORE EXTERNAL PARTITIONS ] ]
where las opciones de WITH son:
|
Opción |
Descripción |
|
|
Incluye los OID de cada fila |
|
|
Incluye una fila de encabezado con los nombres de columna (solo formato CSV) |
|
|
Carácter que separa columnas; por ejemplo, |
|
|
Cadena que representa valores nulos; por ejemplo, |
|
|
Carácter de escape para la salida CSV |
|
|
Usa formato CSV |
|
|
Carácter de comillas para formato CSV |
|
|
Fuerza el uso de comillas en las columnas especificadas de la salida CSV |
|
|
Omite las particiones externas durante la exportación |
Para consultar la referencia completa de sintaxis, consulte COPY en la documentación de PostgreSQL.
AnalyticDB for PostgreSQL también admite la ejecución de la instrucciónCOPYmediante JDBC. El métodoCopyInestá encapsulado en JDBC. Para más detalles, consulte Interface CopyIn.
Exportar datos a un archivo local
Conéctese a su instancia mediante psql y ejecute \copy para exportar una tabla o el resultado de una consulta a un archivo local.
Exportar una tabla completa:
\COPY test1 TO '/path/to/localfile';
Exportar con formato CSV y un delimitador personalizado:
\COPY test1 TO '/path/to/localfile.csv' WITH CSV DELIMITER ',';
Exportar resultados de una consulta:
\COPY (SELECT id, name FROM test1 WHERE status = 'active') TO '/path/to/output.csv' WITH CSV HEADER;
Reemplace los siguientes marcadores de posición con sus valores reales:
|
Marcador de posición |
Descripción |
Ejemplo |
|
|
Nombre de la tabla para exportar |
|
|
|
Ruta absoluta del archivo de salida en su computadora local |
|