Jak wykonać kopię zapasową pojedynczej tabeli w bazie danych MySQL?

441

Domyślnie mysqldumpwykonuje kopię zapasową całej bazy danych. Muszę wykonać kopię zapasową pojedynczej tabeli w MySQL. Czy to możliwe? Jak mogę go przywrócić?

Mandar Pande
źródło

Odpowiedzi:

838

Zrzuć i przywróć pojedynczą tabelę z .sql

Wysypisko

mysqldump db_name table_name > table_name.sql

Zrzut ze zdalnej bazy danych

mysqldump -u <db_username> -h <db_host> -p db_name table_name > table_name.sql

Więcej informacji:

http://www.abbeyworkshop.com/howto/lamp/MySQL_Export_Backup/index.html

Przywracać

mysql -u <user_name> -p db_name
mysql> source <full_path>/table_name.sql

lub w jednej linii

mysql -u username -p db_name < /path/to/table_name.sql


Zrzuć i przywróć pojedynczą tabelę ze skompresowanego formatu (.sql.gz)

Źródło: John McGrath

Wysypisko

mysqldump db_name table_name | gzip > table_name.sql.gz

Przywracać

gunzip < table_name.sql.gz | mysql -u username -p db_name

Ozair Kafray
źródło
13
SQL zwykle dobrze się kompresuje - możesz potokować powyższe polecenie przez gzip, a wynikowy plik będzie znacznie mniejszy: mysqldump db_name table_name | gzip > table_name.sql.gz aby przywrócić: gunzip < table_name.sql.gz | mysql -u username -p db_name
John McGrath
Co jeśli chcesz podać hasło w wierszu poleceń? Używasz już -pPASSWORD
Freedo
23

mysqldump może pobrać parametr nazwa_bloku, dzięki czemu tworzy kopie zapasowe tylko podanych tabel.

mysqldump -u -p yourdb yourtable > c:\backups\backup.sql
Jakub
źródło
15

próbować

for line in $(mysql -u... -p... -AN -e "show tables from NameDataBase");
do 
mysqldump -u... -p.... NameDataBase $line > $line.sql ; 
done
  • $ tabele nazw cotent;)
Robin Gomez
źródło
1
Jest to przydatne do zrzucania bazy danych do oddzielnych zapytań tabelowych - czy mogę wiedzieć, co dokładnie robią opcje?
xiankai
Witaj, -AN (- no-auto-rehash, -A | --skip-column-names, -N Nie wpisuj nazw kolumn w wynikach.) -E (- execute = instrukcja, -e instrukcja | Wykonaj instrukcja i zakończ. Domyślny format wyjściowy jest taki, jak w przypadku --batch.) fuente: dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html
Robin Gomez
12

Możemy wykonać zrzut mysql dowolnej tabeli z dowolnymi warunkami, jak poniżej

mysqldump -uusername -p -hhost databasename tablename --skip-lock-tables

Jeśli chcemy dodać do tabeli konkretny warunek where, możemy użyć następującego polecenia

mysqldump -uusername -p -hhost databasename tablename --where="date=20140501" --skip-lock-tables
minhas23
źródło
8

Możesz łatwo użyć, aby zrzucić wybrane tabele, używając MYSQLWorkbench toolpojedynczo lub grupy tabel na jednym zrzucie, a następnie zaimportować go w następujący sposób: możesz także dodać informacje o hoście, jeśli używasz go w swoim lokalnym, dodając -h IP.ADDRESS.NUMBER after-u Nazwa Użytkownika

mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql 
Daniel Adenew
źródło
Niestety w Mysql Workbench występują pewne problemy związane z ucieczką, które mogą prowadzić do eksportowania niepoprawnych danych, co jest bezużyteczne ...
barell
6

Możesz użyć tego kodu:

W tym przykładzie wykonano kopię zapasową bazy danych sugarcrm i zrzucono dane wyjściowe do sugarcrm.sql

# mysqldump -u root -ptmppassword sugarcrm > sugarcrm.sql

# mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

Sugarcrm.sql będzie zawierał tablicę upuszczania, utwórz tabelę i wstaw polecenie dla wszystkich tabel w bazie danych sugarcrm. Poniżej znajduje się częściowy wynik programu sugarcrm.sql, pokazujący informacje o zrzutie tabeli account_contacts:

-

- Struktura tabeli dla tabeli accounts_contacts

DROP TABLE IF EXISTS `accounts_contacts`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `accounts_contacts` (
`id` varchar(36) NOT NULL,
`contact_id` varchar(36) default NULL,
`account_id` varchar(36) default NULL,
`date_modified` datetime default NULL,
`deleted` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `idx_account_contact` (`account_id`,`contact_id`),
KEY `idx_contid_del_accid` (`contact_id`,`deleted`,`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;

--
Linda Martin
źródło
5

Możesz użyć poniższego kodu:

  1. Dla samej struktury pojedynczej tabeli Kopia zapasowa

-

mysqldump -d <database name> <tablename> > <filename.sql>
  1. Dla struktury pojedynczej tabeli z danymi

-

mysqldump <database name> <tablename> > <filename.sql>

Mam nadzieję, że to pomoże.

Feniks
źródło
5

Możesz albo użyć mysqldumpz wiersza poleceń:

mysqldump -u username -p password dbname tablename > "path where you want to dump"

Możesz także użyć MySQL Workbench:

Idź w lewo> Eksport danych> Wybierz schemat> Wybierz tabele i kliknij Eksportuj

SAM AB
źródło
tylko mała informacja, pomiń spację między -p a hasłem -> -ppassword, ale jest niepewna
Agung Sagita