Usando o MySQL, posso executar a consulta:
SHOW CREATE TABLE MyTable;
E ele retornará a instrução create table para a tabela específica. Isso é útil se você já possui uma tabela criada e deseja criar a mesma tabela em outro banco de dados.
É possível obter a instrução de inserção para uma linha já existente ou conjunto de linhas? Algumas tabelas têm muitas colunas e seria bom conseguir uma instrução de inserção para transferir linhas para outro banco de dados sem precisar gravar a instrução de inserção ou exportar os dados para CSV e importar os mesmos dados no outro banco de dados.
Só para esclarecer, o que eu quero é algo que funcione da seguinte maneira:
SHOW INSERT Select * FROM MyTable WHERE ID = 10;
E retorne o seguinte para mim:
INSERT INTO MyTable(ID,Col1,Col2,Col3) VALUES (10,'hello world','some value','2010-10-20');
mysql>
prompt. Até agora, nenhum.Respostas:
Não parece haver uma maneira de obter as
INSERT
instruções do console do MySQL, mas você pode obtê-las usando o mysqldump como Rob sugeriu. Especifique-t
para omitir a criação da tabela.fonte
--hex-blob
se você tiver colunas de blob (por exemplo, abit(1)
), ela seria gravada como string, o que poderia resultar emUnknown command '\0'
erro ao executar o INSERT.No MySQL Workbench, você pode exportar os resultados de qualquer consulta de tabela única como uma lista de
INSERT
instruções. Basta executar a consulta e, em seguida:Export/Import
acima dos resultadosFormat
selecionarSQL INSERT statements
Save
Export
fonte
Como você copiou a tabela com o SQL produzido por SHOW CREATE TABLE MyTable , você pode fazer o seguinte para carregar os dados na nova tabela.
Se você realmente deseja as instruções INSERT, a única maneira que conheço é usar o mysqldump http://dev.mysql.com/doc/refman/5.1/en/mysqldump.htm . Você pode oferecer opções para apenas despejar dados de uma tabela específica e até limitar linhas.
fonte
Eu escrevi uma função php que fará isso. Eu precisava fazer uma instrução de inserção caso um registro precisasse ser substituído após a exclusão de uma tabela de histórico:
fonte
O' Malley
, as consultas geradas terão erros de sintaxe devido a aspas simples incompatíveis. Você deve pelo menos usarmysql_real_escape_string
se seguir esta rota.O código do Laptop Lift funciona bem, mas havia algumas coisas que eu imaginei que as pessoas pudessem gostar.
O manipulador de banco de dados é um argumento, não codificado. Utilizou a nova API do mysql. $ Id substituído por um argumento $ where opcional para flexibilidade. Utilizado real_escape_string no caso de alguém já ter tentado fazer injeção de sql e evitar quebras simples envolvendo aspas. Usou a
INSERT table (field...) VALUES (value...)...
sintaxe para que os campos sejam definidos apenas uma vez e apenas liste os valores de cada linha (implode é impressionante). Porque Nigel Johnson apontou, eu adicioneiNULL
manipulação.Eu usei
$array[$key]
porque estava preocupado que isso pudesse mudar de alguma forma, mas, a menos que algo esteja terrivelmente errado, não deveria.fonte
INTO
emINSERT INTO {$tables}
mas não há manipulação de valores nulos na tabela.INTO
é completamente opcional . Eu adicionei manipulação de nulos a ele.Eu uso o programa SQLYOG, onde posso fazer uma consulta de seleção, apontar para os resultados e escolher exportar como sql. Isso me dá as instruções de inserção.
fonte
Na bancada de trabalho do MySQL, faça o seguinte:
Clique em Servidor> Exportação de Dados
Na guia Seleção de objeto, selecione o esquema desejado.
Em seguida, selecione as tabelas desejadas usando a caixa de listagem à direita do esquema.
Selecione um local do arquivo para exportar o script.
Clique em Finish.
Navegue para o arquivo recém-criado e copie as instruções de inserção.
fonte
Se você deseja obter "inserir instrução" para sua tabela, tente o seguinte código.
Como resultado, você terá a declaração insers:
INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (Valor_11, value_12, ..., value_1n);INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (value_21, Valor_22, ..., value_2n);/ ................................................. .... /
INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (value_m1, value_m2, ..., value_mn);, onde m - número de registros em sua_tabela
fonte
você pode usar o Sequel pro para fazer isso, existe uma opção para 'obter como instrução de inserção' para os resultados obtidos
fonte
No PHPMyAdmin, você pode:
Você pode aplicá-lo em várias linhas ao mesmo tempo, se selecioná-las e clicar em copiar na parte inferior da tabela e, em seguida, Visualizar SQl
fonte
Com o DOP, você pode fazer dessa maneira.
fonte
Você pode criar um SP com o código abaixo - ele também suporta NULLS.
fonte
Para usuários do HeidiSQL :
Se você usa HeidiSQL, pode selecionar as linhas que deseja obter na instrução de inserção. Em seguida, clique com o botão direito do mouse em> Exportar linhas da grade> selecione "Copiar para a área de transferência" para "Destino de saída", "Seleção" para "Seleção de linha" para não exportar outras linhas, "SQL INSERTs" para "Formato de saída"> Clique em OK.
A instrução de inserção estará dentro da área de transferência.
fonte
Eu acho que a resposta fornecida pelo Laptop Lifts é a melhor ... mas, como ninguém sugeriu a abordagem que eu uso, achei que deveria concordar. Eu uso o phpMyAdmin para configurar e gerenciar meus bancos de dados na maioria das vezes. Nele, você pode simplesmente colocar marcas de seleção ao lado das linhas que deseja e, na parte inferior, clicar em "Exportar" e escolher SQL. Ele fornecerá instruções INSERT para os registros selecionados. Espero que isto ajude.
fonte
Com base nos seus comentários, seu objetivo é migrar as alterações do banco de dados de um ambiente de desenvolvimento para um ambiente de produção.
A melhor maneira de fazer isso é manter as alterações no seu banco de dados no código-fonte e, consequentemente, rastreá-las no seu sistema de controle de fontes, como git ou svn.
você pode começar a trabalhar rapidamente com algo assim: https://github.com/davejkiger/mysql-php-migrations
como uma solução customizada muito básica em PHP, você pode usar uma função como esta:
então você pode criar um script de migração que atualizará qualquer ambiente com suas especificações.
fonte