Za pomocą MySQL mogę uruchomić zapytanie:
SHOW CREATE TABLE MyTable;
I zwróci instrukcję tworzenia tabeli dla określonej tabeli. Jest to przydatne, jeśli masz już utworzoną tabelę i chcesz utworzyć tę samą tabelę w innej bazie danych.
Czy można uzyskać instrukcję wstawiania dla już istniejącego wiersza lub zestawu wierszy? Niektóre tabele mają wiele kolumn i byłoby miło móc uzyskać instrukcję wstawiania, aby przenieść wiersze do innej bazy danych bez konieczności zapisywania instrukcji wstawiania lub bez eksportowania danych do CSV, a następnie importowania tych samych danych do innej bazy danych.
Aby wyjaśnić, czego chcę, to coś, co działałoby w następujący sposób:
SHOW INSERT Select * FROM MyTable WHERE ID = 10;
I zwróciły mi:
INSERT INTO MyTable(ID,Col1,Col2,Col3) VALUES (10,'hello world','some value','2010-10-20');
mysql>
monitu. Jak dotąd nikt tego nie robi.Odpowiedzi:
Wydaje się, że nie ma sposobu na pobranie
INSERT
instrukcji z konsoli MySQL, ale możesz je pobrać za pomocą mysqldump, jak zasugerował Rob. Określ,-t
aby pominąć tworzenie tabeli.źródło
--hex-blob
jeśli masz kolumny typu blob (na przykład abit(1)
), w przeciwnym razie zapisałby je jako ciąg, co mogłoby spowodowaćUnknown command '\0'
błąd podczas wykonywania instrukcji INSERT.W MySQL Workbench możesz wyeksportować wyniki dowolnego zapytania jednotabelowego jako listę
INSERT
instrukcji. Po prostu uruchom zapytanie, a następnie:Export/Import
wynikówFormat
wyboruSQL INSERT statements
Save
Export
źródło
Ponieważ skopiowałeś tabelę za pomocą kodu SQL utworzonego przez SHOW CREATE TABLE MyTable , możesz po prostu wykonać następujące czynności, aby załadować dane do nowej tabeli.
Jeśli naprawdę potrzebujesz instrukcji INSERT, jedyny znany mi sposób to użycie mysqldump http://dev.mysql.com/doc/refman/5.1/en/mysqldump.htm . Możesz dać mu opcje, aby po prostu zrzucić dane dla określonej tabeli, a nawet ograniczyć wiersze.
źródło
Napisałem funkcję php, która to zrobi. Musiałem zrobić instrukcję wstawiania na wypadek, gdyby rekord musiał zostać zastąpiony po usunięciu dla tabeli historii:
źródło
O' Malley
, wygenerowane zapytania będą miały błędy składniowe z powodu niezgodności apostrofów. Powinieneś przynajmniej użyć,mysql_real_escape_string
jeśli wybierasz się tą trasą.Kod podnośnika laptopa działa dobrze, ale było kilka rzeczy, które moim zdaniem mogą się spodobać.
Obsługa bazy danych jest argumentem, a nie zakodowanym na stałe. Użyto nowego mysql api. Zastąpiono $ id opcjonalnym argumentem $ where na rzecz elastyczności. Użyto real_escape_string na wypadek, gdyby ktoś próbował kiedykolwiek wykonać wstrzyknięcie sql i uniknąć prostych błędów związanych z cudzysłowami. Użyłem
INSERT table (field...) VALUES (value...)...
składni, aby pola były zdefiniowane tylko raz, a następnie po prostu wypisały wartości każdego wiersza (implode jest niesamowity). Ponieważ Nigel Johnson to zauważył, dodałemNULL
obsługę.Użyłem,
$array[$key]
ponieważ obawiałem się, że może się to jakoś zmienić, ale chyba że coś jest okropnie nie tak, i tak nie powinno.źródło
INTO
naINSERT INTO {$tables}
ale nie ma obsługa null w tabeli.INTO
jest całkowicie opcjonalne . Dodałem do tego obsługę null.Używam programu SQLYOG, w którym mogę wykonać zapytanie wybierające, wskazać wyniki i wybrać eksport jako sql. To daje mi instrukcje wstawiania.
źródło
W ramach stanowiska roboczego MySQL wykonaj następujące czynności:
Kliknij opcję Serwer> Eksport danych
W zakładce Object Selection wybierz żądany schemat.
Następnie wybierz żądane tabele, używając pola listy po prawej stronie schematu.
Wybierz lokalizację pliku, aby wyeksportować skrypt.
Kliknij Finish.
Przejdź do nowo utworzonego pliku i skopiuj instrukcje wstawiania.
źródło
Jeśli chcesz uzyskać instrukcję wstawiania dla swojej tabeli, możesz wypróbować poniższy kod.
W rezultacie otrzymasz oświadczenie wstawiające:
INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (value_11, value_12, ..., value_1n);INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (value_21, value_22, ..., value_2n);/ ................................................. .... /
INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (value_m1, value_m2, ..., value_mn);, gdzie m - liczba rekordów w twojej_tabeli
źródło
możesz użyć do tego Sequel pro, istnieje opcja „get as insert statement” dla uzyskanych wyników
źródło
W PHPMyAdmin możesz:
Możesz to zastosować do wielu wierszy jednocześnie, jeśli wybierzesz je i klikniesz kopiuj od dołu tabeli, a następnie Podgląd SQl
źródło
Dzięki PDO możesz to zrobić w ten sposób.
źródło
Możesz utworzyć SP za pomocą poniższego kodu - obsługuje również NULLS.
źródło
Dla użytkowników HeidiSQL :
Jeśli używasz HeidiSQL, możesz wybrać wiersz (wiersze), w których chcesz otrzymać instrukcję wstawiania. Następnie kliknij prawym przyciskiem myszy> Eksportuj wiersze siatki> wybierz „Kopiuj do schowka” dla „Cel wyjściowy”, „Zaznaczenie” dla „Wybór wierszy”, aby nie eksportować innych wierszy, „WSTAWIENIE SQL” dla „Format wyjściowy”> Kliknij OK.
Instrukcja wstawiania będzie znajdować się w schowku.
źródło
Myślę, że odpowiedź udzielona przez Laptop Lifts jest najlepsza ... ale ponieważ nikt nie zasugerował podejścia, którego używam, pomyślałem, że powinienem zadzwonić. Używam phpMyAdmin do konfigurowania i zarządzania moimi bazami danych przez większość czasu. W nim możesz po prostu umieścić znaczniki wyboru obok żądanych wierszy, a na dole kliknąć „Eksportuj” i wybrać SQL. Podaje instrukcje INSERT dla dowolnych wybranych rekordów. Mam nadzieję że to pomoże.
źródło
Na podstawie Twoich komentarzy Twoim celem jest migracja zmian w bazie danych ze środowiska programistycznego do środowiska produkcyjnego.
Najlepszym sposobem na to jest zachowanie zmian w bazie danych w kodzie źródłowym i śledzenie ich w systemie kontroli źródła, takim jak git lub svn.
możesz szybko rozpocząć pracę za pomocą czegoś takiego: https://github.com/davejkiger/mysql-php-migrations
jako bardzo podstawowe niestandardowe rozwiązanie w PHP możesz użyć takiej funkcji:
następnie możesz utworzyć skrypt migracji, który zaktualizuje dowolne środowisko zgodnie z Twoimi specyfikacjami.
źródło