Чи можна це зробити mysqldump
одинаком SQL query
?
Я маю на увазі скинути всю базу даних, як phpmyadmin
це робиться, коли ви експортуєтеSQL
Чи можна це зробити mysqldump
одинаком SQL query
?
Я маю на увазі скинути всю базу даних, як phpmyadmin
це робиться, коли ви експортуєтеSQL
Відповіді:
не mysqldump, але mysql cli ...
mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase
ви можете перенаправити його у файл, якщо хочете:
mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt
Оновлення: Оригінальна публікація запитала, чи може він скидати з бази даних запит. Що він запитував і що він мав на увазі, було різним. Він дуже хотів просто mysqldзавантажити всі таблиці.
mysqldump --tables myTable --where="id < 1000"
Це має спрацювати
mysqldump --databases X --tables Y --where="1 limit 1000000"
--no-create-info
параметр. Дивіться мою відповідь для прикладу.
Ви можете скинути запит як CSV, як це:
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
scp
після припинення з'єднання. ось приклад. scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
Вивантажте таблицю, використовуючи запит де:
mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql
Вивантажте всю таблицю:
mysqldump mydatabase mytable > data.sql
Примітки:
mydatabase
, mytable
і де оператор на бажані значення.mysqldump
буде включати DROP TABLE
і CREATE TABLE
заяви у свій висновок. Тому, якщо ви хочете не видаляти всі дані з вашої таблиці під час відновлення із збереженого файлу даних, переконайтеся, що ви використовуєте цю --no-create-info
опцію.-h
, -u
та -p
параметри до наведених вище прикладів команд, щоб вказати бажаний хост бази даних, користувача та пароль відповідно.Ви можете використовувати де-небудь варіант на mysqldump для отримання результату, який вас чекає:
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
Щонайбільше 100 рядків з test.t1 буде вивантажено з таблиці баз даних.
Ура, СБ
Якщо ви хочете експортувати останню n кількість записів у файл, можете запустити наступне:
mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql
Вищезгадане збереже останні 100 записів у export_file.sql, якщо припустити, що таблиця, з якої ви експортуєте, містить стовпчик ідентифікатора, що автоматично збільшується.
Вам потрібно буде змінити значення користувача, localhost, бази даних та таблиці. Ви можете за бажанням змінити стовпчик id та імпортувати ім'я файлу.
MySQL Workbench також має цю функцію акуратно в графічному інтерфейсі. Просто запустіть запит, натисніть значок збереження поруч із Експорт / імпорт:
Потім виберіть у списку "SQL INSERT заяви (* .sql)".
Введіть ім’я, натисніть кнопку «Зберегти», підтвердьте ім’я таблиці, і ви отримаєте свій дамп-файл.
Поєднуючи велике вище, - це мій реальний практичний приклад - вибір записів на основі метриди та часової позначки. Мені потрібна ця команда роками. Виконується дійсно швидко.
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 Експорт командного рядка результатів запиту:
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt