--no-create-dbjest zbędny podczas używania--no-create-info
James McMahon,
4
Miejsce po -pjest w porządku
Dziękuję
12
Ogólnie lepiej jest użyć opcji -p bez podania hasła, aby hasło nie było przechowywane w historii bash (po uruchomieniu polecenia pojawi się monit o podanie hasła).
Dan
2
Oprócz porady @ Dana, hasło to jest również widoczne dla każdego użytkownika, który może wyświetlić listę bieżących procesów ( ps -ef)
TMG
1
Pozostawienie hasła po -popcji powoduje wyświetlenie mysqldumpmonitu o podanie hasła.
Melle
22
>> man -k mysqldump [enter in the terminal]
znajdziesz poniższe wyjaśnienie
--no-create-info, -t
Nie pisz instrukcji CREATE TABLE, które odtwarzają każdą zrzuconą tabelę. Uwaga Ta opcja nie wyklucza instrukcji tworzących grupy plików dziennika lub obszary tabel z danych wyjściowych mysqldump; można jednak w tym celu użyć opcji --no-tablespaces.
- brak danych, -d
Nie pisz żadnych informacji o wierszach tabeli (to znaczy nie zrzucaj zawartości tabeli). Jest to przydatne, jeśli chcesz zrzucić tylko instrukcję CREATE TABLE dla tabeli (na przykład, aby utworzyć pustą kopię tabeli, ładując plik zrzutu).
dziękuję za to, że --compactpozbyłem się dodatkowych komentarzy
chiliNUT
2
Sugeruje użycie następującego fragmentu kodu. Działa dobrze nawet z dużymi tabelami (w przeciwnym razie otworzyłbyś zrzut w edytorze i usunął niepotrzebne rzeczy, prawda?)
mysqldump --no-create-info --skip-triggers --extended-insert --lock-tables --quick DB TABLE > dump.sql
Wymagany co najmniej mysql 5.x , ale kto dziś obsługuje stare rzeczy :)
Niedawno natknąłem się na sytuację, w której musiałem połączyć się z systemem, który używa 4.x w produkcji. Mieli spacje w nazwach tabel i kolumn i moim zdaniem robili właściwie wszystko źle.
Podczas próby wyeksportowania danych przy użyciu zaakceptowanej odpowiedzi wystąpił błąd:
ERROR 1235(42000) at line 3367: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
Jak wspomniano powyżej:
mysqldump --no-create-info
Wyeksportuje dane, ale wyeksportuje również instrukcje tworzenia wyzwalaczy. Jeśli tak jak ja, twoja wyjściowa struktura bazy danych (która obejmuje również wyzwalacze) za pomocą jednego polecenia, a następnie za pomocą powyższego polecenia, aby uzyskać dane, powinieneś również użyć opcji --skip-triggers.
Odpowiedzi:
Możesz również użyć:
--skip-triggers
: jeśli używasz wyzwalaczy--no-create-db
: jeśli używasz--databases ...
opcji--compact
: jeśli chcesz pozbyć się dodatkowych komentarzyźródło
mysqldump -u USERNAME -h HOST --no-create-info --skip-triggers YOURDATABASENAME YOURTABLENAME --where='id=12345678'
Access denied for user ... to database '...' when doing LOCK TABLES
, użyj--single-transaction
--where
. Na przykład--where="id=2"
To powinno działać:
UWAGA: nie ma spacji między
-p
&[pass]
źródło
--no-create-db
jest zbędny podczas używania--no-create-info
-p
jest w porządkups -ef
)-p
opcji powoduje wyświetleniemysqldump
monitu o podanie hasła.znajdziesz poniższe wyjaśnienie
źródło
Jeśli chcesz tylko wstawić zapytania, użyj następujących poleceń:
mysqldump --skip-triggers --compact --no-create-info
źródło
--compact
pozbyłem się dodatkowych komentarzySugeruje użycie następującego fragmentu kodu. Działa dobrze nawet z dużymi tabelami (w przeciwnym razie otworzyłbyś zrzut w edytorze i usunął niepotrzebne rzeczy, prawda?)
Wymagany co najmniej mysql 5.x , ale kto dziś obsługuje stare rzeczy :)
źródło
Po prostu zrzuć dane w formacie tekstu rozdzielanego .
źródło
Spróbuj zrzucić plik z ogranicznikami.
źródło
Podczas próby wyeksportowania danych przy użyciu zaakceptowanej odpowiedzi wystąpił błąd:
Jak wspomniano powyżej:
Wyeksportuje dane, ale wyeksportuje również instrukcje tworzenia wyzwalaczy. Jeśli tak jak ja, twoja wyjściowa struktura bazy danych (która obejmuje również wyzwalacze) za pomocą jednego polecenia, a następnie za pomocą powyższego polecenia, aby uzyskać dane, powinieneś również użyć opcji --skip-triggers.
Więc jeśli chcesz TYLKO dane:
źródło