Uso del comando COPY con Base de datos ilimitada de Aurora PostgreSQL
Puede utilizar la funcionalidad \copypsql
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
Base de datos ilimitada de Aurora PostgreSQL admite la funcionalidad \copypsql
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
yCOPY ... 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
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
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
Puede usar el comando \copy
postgres_limitless=> \copy test_table TO '/tmp/test_table.csv' DELIMITER ',' CSV HEADER;