É possível fazer mysqldump
por solteiro SQL query
?
Quero despejar todo o banco de dados, como phpmyadmin
acontece quando você exporta paraSQL
É possível fazer mysqldump
por solteiro SQL query
?
Quero despejar todo o banco de dados, como phpmyadmin
acontece quando você exporta paraSQL
Respostas:
não mysqldump, mas mysql cli ...
mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase
você pode redirecioná-lo para um arquivo, se desejar:
mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt
Atualização: a postagem original perguntou se ele poderia despejar do banco de dados por consulta. O que ele perguntou e o que ele quis dizer eram diferentes. Ele realmente queria apenas mysqldump todas as tabelas.
mysqldump --tables myTable --where="id < 1000"
Isso deve funcionar
mysqldump --databases X --tables Y --where="1 limit 1000000"
--no-create-info
opção. Veja minha resposta para um exemplo.
Você pode despejar uma consulta como csv assim:
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
scp
após a conexão ser encerrada. aqui está um exemplo scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
Despejar uma tabela usando uma consulta where:
mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql
Despejar uma tabela inteira:
mysqldump mydatabase mytable > data.sql
Notas:
mydatabase
, mytable
eo onde declaração com os valores que desejar.mysqldump
incluirá DROP TABLE
e CREATE TABLE
instruções em sua saída. Portanto, se você não deseja excluir todos os dados da sua tabela ao restaurar a partir do arquivo de dados salvo, use o--no-create-info
opção-h
, -u
e -p
opções para os comandos de exemplo acima, a fim de especificar o seu desejado host do banco, usuário e senha, respectivamente.Você pode usar a opção --where no mysqldump para produzir uma saída que você está esperando:
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
No máximo 100 linhas de test.t1 serão descartadas da tabela do banco de dados.
Saúde, WB
Se você deseja exportar sua última quantidade de registros para um arquivo, execute o seguinte:
mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql
O exemplo acima salvará os últimos 100 registros no arquivo export_file.sql, assumindo que a tabela da qual você está exportando tenha uma coluna de ID incrementada automaticamente.
Você precisará alterar os valores de usuário, host local, banco de dados e tabela. Opcionalmente, você pode alterar a coluna de identificação e exportar o nome do arquivo.
O MySQL Workbench também possui esse recurso na GUI. Basta executar uma consulta, clique no ícone Salvar ao lado de Exportar / Importar:
Em seguida, escolha "Instruções SQL INSERT (* .sql)" na lista.
Digite um nome, clique em Salvar, confirme o nome da tabela e você terá seu arquivo de despejo.
Combinando grande parte do exposto aqui, está o meu exemplo prático real, selecionando registros com base no meterid e no timestamp. Eu preciso desse comando há anos. Executa muito rapidamente.
mysqldump -uuser -ppassword main_dbo trHourly --where="MeterID =5406 AND TIMESTAMP<'2014-10-13 05:00:00'" --no-create-info --skip-extended-insert | grep '^INSERT' > 5406.sql
mysql Exportar a linha de comando dos resultados da consulta:
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt