![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.02.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie... Problem z jakim uderzam do was jest jak sądzę nietypowy... podpowiedzcie proszę jak najprościej wykonać operację przeniesienia danych z tabeli x na serwerze z PostgreSQL do serwera MySQL... Chodzi o to by dodać takie polecenie do Cron'a by się dane synchronizowały np. codziennie po 15:00...
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 175 Pomógł: 18 Dołączył: 11.06.2007 Skąd: Koszalin/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Przejżyj czy pola synchronizowanych danych są ze sobą kompatybilne, jeśli tak to zwykły mysqdump i psql.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.02.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Pola sa kompatybilne, bo aktualnie zrobilem to recznym eksportem/importem, ale duzo zabawy ze zmiana kodowania mialem... przy csv. Pytanie jest jeszcze takie.... z tabeli x na serwerze x chce wyeksportowac tylko czesc kolumn do tabeli x na sdrwerze y... to tez da rade mysqldump?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Jeżeli można mu podać zakres od do to pewnie tak, sprawdź, czemu się pytasz a nie sprawdzisz sam?
-------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.02.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
bo wiem tylko CO, ale nie wiem Jak... tylko mniej więcej się oriętuje co do zasady, ale polecenia to czarna magia... aczkolwiek jesli ktoś mnie nakierowuje to już sobie przeważnie radzę... poprostu chodzi o pokazanie przykładu...
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Aaaaa Ty to robisz w drugą stronę, mimo wszystko w postgresie nie da się wybrać rekordów przy dumpie jakie mają zostać zdumpowane, można ewentualnie całą tabelę. Albo sobie napisać skrypt który sam to za Ciebie zrobi.
Np wybierze wszystkie rekordy z postgresa, wybierze wszystkie rekordy z mysql, później zrobisz array_unique na samych idkach oczywiście, pobierzesz wszystkie unikalne rekordy z postgresa których nie ma w mysql i je wrzucisz. Amen ![]() Ten post edytował cojack 23.02.2011, 18:36:30 -------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 27.02.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Noo.. Myślałem, że wyłuszczyłem, że nie chcę tego ręcznie robić, tylko skryptem ...
![]() ja chcę, aby zawsze rano kasował wszystkie dane w tabeli na serwerze Y... i kopiował w to miejsce wszystkie dane z tabeli z serwera X... już bez sprawdzania unikalności bo nie połączy się serwer Y z X... jedyna możliwość to taka, że połączy się serwer X z serwerem Y... (zwyczajnie serwer X ma ustawione mac adresy z którymi pozwala na połączenia... natomiast sam może połączyć się z całym internetem. no i jak już wracamy do tematu ![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
No jak to jak masz pseudo kod, napisz sobie na podstawie jego swój własny:
Kod DELETE FROM tabela; - na serwerze Y $wyniki = "SELECT * FROM tabela;" - z serwera X dla kazdego $wyniku zrób: $zapytanie = "INSERT INTO tabela VALUES ( $wynik['cos'], $wynik->cos2, $wynik... )"; - na serwerze Y koniec; ![]() Ten post edytował cojack 24.02.2011, 09:33:31 -------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 4 Dołączył: 21.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Kod DELETE FROM tabela; - na serwerze Y Tak to nigdy nie rób, bo strzelisz sobie w kolano. Zawsze Truncate jeżeli wywalasz wszystko. Później oczyszczenie miejsca na dysku. Może tak: Kod psql -U username -d test -q -c "truncate table tabelka" vacuumdb -U username -d test mysqldump -u username --password='123456' --skip-quote-names --no-create-info --no-create-db --skip-opt --skip-set-charset --skip-comments test tabelka > a.sql psql -U username -d test < a.sql Przy czym to nie jest najlepszy sposób ładowania danych. Powinno się skorzystać z polecenia LOAD DATA (ale tutaj dump musi być w formie np. csv). -------------------- ==============================================
Bo ja jestem Wróbelek Htmlek ============================================== |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Cytat TRUNCATE TABLE empties a table completely. Logically, this is equivalent to a DELETE statement that deletes all rows, but there are practical differences under some circumstances. http://dev.mysql.com/doc/refman/5.0/en/truncate-table.html mkozak - strzelasz ślepakami. -------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 4 Dołączył: 21.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Truncate na Postgresie.
Widzę, że u ciebie nawet ślepaków brak - niewypał. Między tymi bazami jest jednak różnica. Odsyłam do lektury. -------------------- ==============================================
Bo ja jestem Wróbelek Htmlek ============================================== |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Wróć się do podstawówki, i naucz się czytać tekst z zrozumieniem. On przenosi dane z PostgreSQL do MySQL. Więc serwer Y to MySQL, po jaką cholerę ma pierw kasować dane z PostgreSQL, które chce przenieść? Po pierwsze, jeżeli już się tak upierasz że to taka wielka różnica pomiędzy bazami, to Ci powiem jak to wygląda w Postgresie bo widzę że masz zerowe pojęcie. Tak jak w MySQL w PostgreSQL nie ma zasadniczo żadnej większej różnicy pomiędzy Truncate a DELETE FROM, to po 1, po 2 TRUCATE od razu zwalnia miejsce na dysku, a nie tak jak Ty pisałeś:
Cytat Później oczyszczenie miejsca na dysku. Po 3, TRUNCATE, nie skanuje tabel, tylko leci w transakcji i wywala co jak leci, jak się nie spodoba, to rollback i nic nie kasuje. Po 4, TRUNCATE, nie wyzwala triggerów na ON DELETE Po 5, TRUNCATE to ANSI SQL, także ma prawo (powinien) działać w każdej bazie tak samo. -------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 8.05.2025 - 07:12 |