Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

spacichenrique

Inserir milhares de registros no Mysql com 1 linha

Recommended Posts

Ola,

preciso inserir milhares de registros em uma tabela do mysql de acordo com outra.

 

Eu imaginei a query abaixo, mas ele retorna dizendo "Subquery returns more than 1 row"

 

insert into email_subscribers_data (subscriberid, fieldid, data) values ((SELECT subscriberid from email_list_subscribers where listid=48), 4, 7890943)

 

A ideia era inserir na tabela email_subscribers_data X novos registros. Esse X seria o numero de registros retornados da consulta SELECT subscriberid from email_list_subscribers where listid=48.

 

Então, por exemplo, caso a consulta retorne 5 registros, assim:

subscriberid = 1;

subscriberid = 2;

subscriberid = 3;

subscriberid =4;

subscriberid =5;

 

ele irá executar 5 INSERTS, na pratica, assim:

insert into email_subscribers_data (subscriberid, fieldid, data) values (1, 4, 7890943)

insert into email_subscribers_data (subscriberid, fieldid, data) values (2, 4, 7890943)

insert into email_subscribers_data (subscriberid, fieldid, data) values (3, 4, 7890943)

insert into email_subscribers_data (subscriberid, fieldid, data) values (4, 4, 7890943)

insert into email_subscribers_data (subscriberid, fieldid, data) values (5, 4, 7890943)

 

 

Note que o segundo e o terceiro campo são fixos. Eles não mudam.

 

O grande problema é que preciso inserir 500 mil linhas. Essa operacao so precisa ser executa 1 vez, so que 500 mil vezes .

 

Isso é possivel ?

 

Obrigado a quem puder ajudar!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não grande entender de mysql, dá para fazer pelo mysql?

Porque pelo PHP, eu consigo fazer, meio que forçando, mas consigo.

Só que eu não tenho acesso ao FTP para subir um arquivo. So ao MYSQL.

 

Se souver como fazer pelo mysql, dá um exemplo por favor ;) !!

 

Obrigado pela ajuda!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta dica é pelo MySQL.

 

Se o SELECT que tem mais de uma linha é assim:

SELECT subscriberid
FROM email_list_subscribers
WHERE listid=48

Se não é possível identificar as demais informações a ser passadas (`fieldid` e `data`) com um JOIN, pode passar diretamente no SQL, mas não é aconselhado. Exemplo:

SELECT subscriberid, 4, 7890943
FROM email_list_subscribers
WHERE listid=48

Feito isso, se o valor retornado pelo SELECT é o que você precisa pra fazer o INSERT, adicione a cláusula INSERT antes do SELECT:

INSERT INTO email_subscribers_data (susbcriberid, fieldid, data)
SELECT subscriberid, 4, 7890943
FROM email_list_subscribers
WHERE listid=48 

Acho que agora dá pra entender um pouco melhor, mas estarei por aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.