

# Uso del comando COPY con Base de datos ilimitada de Aurora PostgreSQL
<a name="limitless-load.copy"></a>

Puede utilizar la funcionalidad [\$1copy](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMANDS-COPY) de la utilidad `psql` para importar y exportar datos desde Base de datos ilimitada de Aurora PostgreSQL.

## Uso del comando COPY para cargar datos en Base de datos ilimitada de Aurora PostgreSQL
<a name="limitless-load.copy-to"></a>

Base de datos ilimitada de Aurora PostgreSQL admite la funcionalidad [\$1copy](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMANDS-COPY) de la utilidad `psql` para importar datos.

En Base de datos ilimitada y en Aurora PostgreSQL no se admite lo siguiente:
+ Acceso SSH directo a las instancias de base de datos: no puede copiar un archivo de datos (por ejemplo, en formato .csv) al host de la instancia de base de datos y ejecutar `COPY` desde el archivo.
+ Uso de archivos locales en la instancia de base de datos: utilice `COPY ... FROM STDIN` y `COPY ... TO STDOUT`.

El comando `COPY` en PostgreSQL tiene opciones para trabajar con archivos locales (`FROM/TO`) y transmitir datos mediante una conexión entre el cliente y el servidor (`STDIN/STDOUT`). Para obtener más información, consulte [COPY](https://www.postgresql.org/docs/current/sql-copy.html) en la documentación de PostgreSQL.

El comando `\copy` de la utilidad `psql` de PostgreSQL funciona con los archivos locales del equipo en el que ejecuta el cliente `psql`. Este invoca el comando `COPY ... FROM STDIN` o `COPY ... FROM STDOUT` correspondiente en el servidor remoto (por ejemplo, Base de datos ilimitada) al que se conecte. Lee los datos del archivo local en `STDIN` o escribe en él desde `STDOUT`.

### Distribución de los datos en distintos archivos
<a name="limitless-load.copy-split"></a>

Los datos se almacenan en varias particiones en Base de datos ilimitada de Aurora PostgreSQL. Para acelerar la carga de datos mediante `\copy`, puede dividir los datos en varios archivos. A continuación, importe cada archivo de datos de forma independiente ejecutando comandos `\copy` separados en paralelo.

Por ejemplo, tiene un archivo de datos de entrada en formato CSV con tres millones de filas para importar. Puede dividir el archivo en fragmentos que contengan 200 000 filas (quince fragmentos) cada uno:

```
split -l200000 data.csv data_ --additional-suffix=.csv -d
```

Esto da como resultado archivos desde `data_00.csv` a `data_14.csv`. A continuación, puede importar datos con quince comandos `\copy` paralelos, por ejemplo:

```
psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table from '/tmp/data_00.csv';" postgres_limitless &
psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_01.csv';" postgres_limitless &
...
psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_13.csv';" postgres_limitless &
psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_14.csv';" postgres_limitless
```

Con esta técnica, se importa la misma cantidad de datos aproximadamente diez veces más rápido que con un solo comando `\copy`.

## Uso del comando COPY para copiar datos de Base de datos ilimitada en un archivo
<a name="limitless-load.copy-from"></a>

Puede usar el comando [\$1copy](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMANDS-COPY) para copiar datos de una tabla ilimitada en un archivo, tal como se muestra en el siguiente ejemplo:

```
postgres_limitless=> \copy test_table TO '/tmp/test_table.csv' DELIMITER ',' CSV HEADER;
```