2
respostas

INSERIR MAIS DADOS NA TABELA COM O INSERT INTO

olá! eu gostaria de inserir mais de uma linha de dados na tabela que criei, tentei utilizar um codigo que aprendi no youtube para importar um arquivo em csv mas apresentou erro e pelo que entendi é porque não tenho acesso para fazer importação do arquivo pelo postgre e então eu tentei inserir os dados com o INSERT INTO conforme aprendido mas se eu colocar mais de uma linha de dados não entra. Como faço para inserir varias linhas de dados com o codigo?

07/03/2023,6,5,00:04:25,02:39:55 22/02/2023,7,5,00:04:05,01:51:53

INSERT INTO tbl_base_finc_prd (dt,
                               analyst,
                               quantity,
                               ld_anl,
                               ld_process)VALUES ('2023-03-07',
                                                  6,
                                                  5,
                                                  '00:04:25',
                                                  '02:39:55'
                                                 '2023-02-22',
                                                  7,
                                                  5,
                                                  '00:04:05',
                                                  '01:51:53');
                                                  ERROR:  INSERT has more expressions than target columns
LINE 11:               7,
                       ^
SQL state: 42601
Character: 262

segue também o codigo para criação da tabela CREATE TABLE tbl_base_finc_prd (ID_activity SERIAL, dt DATE, analyst INTEGER, quantity INTEGER, ld_anl TIME, ld_process TIME );

tabela: ID_activity dt analyst quantity ld_anl ld_process M07 07/03/2023 6 5 00:04:25 02:39:55 M07 22/02/2023 7 5 00:04:05 01:51:53 M07 26/04/2023 3 5 00:02:27 01:33:25 M07 13/01/2023 4 5 00:04:08 02:40:28 M07 12/04/2023 7 5 00:03:41 01:26:33 M07 23/01/2023 5 5 00:04:59 01:51:46 M07 06/01/2023 2 5 00:02:01 01:37:32 M07 23/01/2023 7 5 00:02:03 02:20:49 M07 08/03/2023 5 5 00:02:01 02:29:55 M07 18/03/2023 6 5 00:03:08 01:05:58 M07 18/03/2023 7 5 00:02:10 02:05:10 tabela criada em csv que preciso importar codigo utilizado para importaçao do arquivo csv: COPY public.tbl_base_finc_prd FROM 'C:\Users\crist\OneDrive\BI\PROJETOS SQL\tbl_base_finc_prd.csv' DELIMITER ';' CSV HEADER;

retorno do postgre ERROR: could not open file "C:\Users\crist\OneDrive\BI\PROJETOS SQL\tbl_base_finc_prd.csv" for reading: Permission denied HINT: COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy. SQL state: 42501

2 respostas

Cristina,

Então, não sei se te ajuda, mas para inserir várias linhas com um único comando INSERT INTO, você pode fazer desta forma:

===============================================================

Como inserir dados em tabelas no PostgreSQL com INSERT INTO

Postado Em 25/08/2020 por Fábio dos Reis em PostgreSQL

...

Tabela de Autores

Agora cadastraremos 14 autores na tabela de autores. Vamos usar uma forma simplificada da sintaxe do comando INSERT INTO, na qual executamos o comando apenas uma vez, passando todos os registros (linhas) separados por uma vírgula:

INSERT INTO tbl_autores
VALUES
(1, 'Daniel', 'Barret'),
(2, 'Gerald', 'Carter'),
(3, 'Mark', 'Sobell'),
(4, 'William', 'Stanek'),
(5, 'Richard', 'Blum'),
(6, 'Jostein', 'Gaarder'),
(7, 'Umberto', 'Eco'),
(8, 'Neil', 'De Grasse Tyson'),
(9, 'Stephen', 'Hawking'),
(10, 'Stephen', 'Jay Gould'),
(11, 'Charles', 'Darwin'),
(12, 'Alan', 'Turing'),
(13, 'Simon', 'Monk'),
(14, 'Paul', 'Scherz');

...

http://www.bosontreinamentos.com.br/postgresql-banco-dados/como-inserir-dados-em-tabelas-no-postgresql-com-insert-into/

===============================================================

Parece que faltou o parênteses.

Outro link interesssante:

===============================================================

PostgreSQL - Importando .CSV em uma tabela já existente

Possuo uma tabela com três colunas, que já possui dados, em meu PostgreSQL.

Tenho um arquivo .CSV com quatro colunas.

Gostaria de adicionar os dados de três colunas do .CSV ao SQL sem substituir os que já estão lá.

Como fazer ?

  1. Se o arquivo.csv estiver na máquina do servidor postgresql use o comando SQL:

...

COPY cnpj.cnae(cnpj, cnae, nat_jur) 
FROM 'G:\cnpj_dados_cnae_secundario_filt.csv' 
WITH FORMAT CSV HEADER DELIMITER '#' 
FORCE_NULL (nat_jur);

2 Caso o arquivo resida numa máquina cliente utilize o \copy do psql.

...

https://pt.stackoverflow.com/questions/430974/postgresql-importando-csv-em-uma-tabela-j%c3%a1-existente

===============================================================

[]'s,

Fabio I.

Fábio, muito obrigada pelo apoio! Fiz de acordo com a primeira opção e deu certo, a segunda tentei , deu um erro mas vou tentar novamente com mais calma.