Estou tentando importar um arquivo CSV para um banco de dados através do comando "COPY"; no entanto, recebo o erro (o que parece comum) de que preciso ser um superusuário e que devo usar "\ copy". No entanto, ao usar \ copy, recebo um erro de sintaxe:
ERROR: syntax error at or near "\"
LINE 1: \copy
Com o sinal de intercalação apontando para "\". Aqui está a minha consulta:
\copy tablename(column2, column3, column4, column5) from '/home/uploads/data.csv' WITH DELIMITER ',' CSV HEADER'
Eu tentei "copiar" e "\ copiar". O primeiro me deu um erro de superusuário e o último me deu esse erro de sintaxe. Alguma idéia de como consertar isso? faça funcionar?
Estou executando o comando através do campo de entrada sql do myPgAdmin.
A única outra pergunta que tenho é relativa à importação de colunas via tablename (coluna2, coluna3 e assim por diante. Essa é a sintaxe correta para isso?
fonte
Por favor, consulte o manual do postgres para COPY .
No pgAdmin (ou na string sql que você passa por um script ou outra conexão db), você usaria COPY sem o prefixo "\".
então digite algo como:
COPY tablename....
Você precisa se certificar de ter os privilégios relevantes para executar o comando, portanto, nesse caso, você deve poder efetuar login no banco de dados e ter acesso de gravação ao 'tablename'. O Postgres também precisa ser capaz de acessar o arquivo, portanto o caminho / home / uploads / deve estar acessível no servidor de banco de dados e o usuário do postgres deve poder ler o arquivo - verifique as permissões para o arquivo e o diretório.
fonte
No meu sistema 9.1, o erro que recebo é bastante informativo:
Se você ler a dica novamente com atenção, ela poderá copiar do stdin. Isto é o que \ copy no psql realmente faz no back-end. Consulte os documentos em http://www.postgresql.org/docs/8.3/static/sql-copy.html para obter mais informações.
Você pode colocar o corpo da cópia em sua consulta ou, pelo menos, é assim que funciona no psql.
fonte
É assim que faço no pgAdmin3. Mas verifique os direitos do usuário com cuidado, às vezes os direitos são o problema. (usuário postgres em filename.txt / chmod 777)
fonte
Outro método é criar uma exibição para a consulta sql. Em seguida, use o comando \ copy.
fonte