Estoy intentando importar un archivo CSV a una base de datos mediante el comando "COPIAR"; sin embargo, aparece el error (lo que parece común) de que necesito ser un superusuario y que debería usar "\ copy" en su lugar. Sin embargo, cuando uso \ copy, obtengo un error de sintaxis:
ERROR: syntax error at or near "\"
LINE 1: \copy
Con el cursor apuntando a "\". Aquí está mi consulta:
\copy tablename(column2, column3, column4, column5) from '/home/uploads/data.csv' WITH DELIMITER ',' CSV HEADER'
Intenté "copiar" y "\ copiar". El primero me da un error de superusuario, el último me da ese error de sintaxis. ¿Alguna idea sobre cómo solucionarlo? ¿hazlo funcionar?
Estoy ejecutando el comando a través del campo de entrada sql de myPgAdmin.
La única otra pregunta que tengo es sobre la importación de las columnas a través del nombre de la tabla (column2, column3, etc.) ¿Es esa la sintaxis correcta para eso?
fuente
Consulte el manual de postgres para COPIA .
En pgAdmin (o la cadena sql que pasa a través de un script u otra conexión db) simplemente usaría COPY sin el prefijo "\".
así que ingrese algo como:
COPY tablename....
Debe asegurarse de tener los privilegios relevantes para ejecutar el comando, por lo que en este caso debe poder iniciar sesión en la base de datos y tener acceso de escritura a 'tablename'. Postgres también debe poder acceder al archivo, por lo que la ruta / home / uploads / debe estar accesible en el servidor de la base de datos y el usuario de postgres debe poder leer el archivo; verifique los permisos para el archivo y el directorio.
fuente
En mi sistema 9.1, el error que obtengo es bastante informativo:
Si vuelve a leer la pista cuidadosamente, observa que puede copiar desde stdin. Esto es lo que \ copy en psql realmente hace en el back-end. Consulte los documentos en http://www.postgresql.org/docs/8.3/static/sql-copy.html para obtener más información.
Luego puede poner el cuerpo de la copia en su consulta o al menos así es como funciona en psql.
fuente
Así es como lo hago en pgAdmin3. Pero revise los derechos de usuario con cuidado, a veces los derechos son el problema. (usuario postgres en filename.txt / chmod 777)
fuente
Otro método es crear una vista para la consulta sql. Luego use el comando \ copy.
fuente