como inserir muitos registros similares no mysql por vez?

1

Sabemos que podemos inserir vários registros por vez usando esta consulta:

INSERT INTO 'TABLE1' ('First','Last') VALUES ('name1','surname1'),
('name2','surname2'),
('name3','surname3'),
('name4','surname4');

mas e se quisermos adicionar 1000 registros semelhantes, como acima de (name*,surname*) , temos que anotar todos os registros ou podemos usar algo como curinga? ou existe alguma outra solução usando o mysql (phpmyadmin)?

    
por Networker 02.06.2014 / 01:34

2 respostas

1

Não, você só pode fazer esses tipos de inserções:

INSERT INTO table (artist, album, track, length) 
VALUES 
("$artist", "$album", "$track1", "$length1"), 
("$artist", "$album", "$track2", "$length2"),
("$artist", "$album", "$track3", "$length3"), 
("$artist", "$album", "$track4", "$length4"),
("$artist", "$album", "$track5", "$length5");

Mas você sempre pode escrever um script que gere o acima usando qualquer expressão regular desejada. O script seria responsável por expandir as expressões regulares para o INSERT ... apropriado acima e, em seguida, executá-lo.

Operador REGEXP

Você pode tentar gerar seus padrões antes do tempo ou como parte do conteúdo do comando VALUES usando REGEXP .

Você pode usá-lo frequentemente na cláusula WHERE desta forma:

SELECT col1, col2, ..., coln
FROM products
WHERE sku REGEXP '^[A-Za-z]{2,4}-[0-9]{3}-[0-9]{2}$'

Você pode ler mais sobre esse operador no site do MySQL, sob os documentos REGEXP , mas eu nunca vi isso usado dessa maneira e nunca pensei em tentar também. Eu encontrei o comando mencionado neste SO Q & A intitulado: Adaptar um Regex ao trabalho com o MySQL .

Referências

por 02.06.2014 / 02:54
0

Como outras respostas dizem, você não pode, mas se você estiver usando PHP + PDO e instruções preparadas , você pode reutilizar sua declaração com vários parâmetros diferentes enquanto a máquina faz um cache da sua declaração para otimizar todo o processo. Sem mencionar que vai cuidar do escapismo e daquelas coisas. O código pode ser algo como isto (PHP):

$DBH = new PDO("mysql:dbname=pdo;host=localhost", "username", "password" );
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$STMT = $DBH->prepare("INSERT INTO 'table' ('col1', 'col2') VALUES (?,?)");

// Let's say $array is an array of 1000+ different elements
foreach ($array as $value) {
    $STMT->bindParam(1, $value); // You just need to bind the params and execute
    $STMT->bindParam(2, $value); // the statement for every record.
    $STMT->execute();
}

$DBH = NULL;

Além disso, sugiro que você use o Administrador , sua interface é mais limpa e é mais simples manter / atualizar (é apenas um único arquivo PHP com o aplicativo inteiro). Sem mencionar que o phpmyadmin não está mais em desenvolvimento (o Adminer é o presente e o futuro do phpmyadmin).

    
por 02.06.2014 / 10:16