Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kopiowanie dużych danych z tabeli do tabeli
GoldeNx3
post 28.07.2020, 13:16:35
Post #1





Grupa: Zarejestrowani
Postów: 228
Pomógł: 1
Dołączył: 24.12.2010

Ostrzeżenie: (0%)
-----


Cześć,

mam za zadanie przekopiować dużą ilość danych z jednej tabeli do drugiej. Pytanie teraz jak to najlepiej zrobić za pomocą OFFSETu i LIMIT? Dodam, że do drugiej tabeli muszę dopisać jeszcze jedną kolumnę która będzie miała defaultowo ustawione "1". Tabela ma około 100mln rekordów. Jak to zrobić w PHPie za pomocą jakiejś pętli i dobrego zapytania?
Go to the top of the page
+Quote Post
nospor
post 28.07.2020, 13:50:18
Post #2





Grupa: Moderatorzy
Postów: 35 441
Pomógł: 5982
Dołączył: 27.12.2004




A czemu nie zrobisz tego na poziomie bazy danych?
https://dev.mysql.com/doc/refman/8.0/en/insert-select.html


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
GoldeNx3
post 29.07.2020, 06:37:19
Post #3





Grupa: Zarejestrowani
Postów: 228
Pomógł: 1
Dołączył: 24.12.2010

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 28.07.2020, 14:50:18 ) *
A czemu nie zrobisz tego na poziomie bazy danych?
https://dev.mysql.com/doc/refman/8.0/en/insert-select.html



Zw względu na to, że danych jest za dużo. Muszę to rozbić na paczki i zrobić to w pętli wykorzystując offset i limit, bo jak będzie aktualizacja kodu produkcyjnego, to system nie może być zbyt długo wyłączony i migracja nie może się zbyt długo wykonywać. Część muszę wykonać przy wyłączeniu systemu, a część już po włączeniu.

Ten post edytował GoldeNx3 29.07.2020, 07:03:42
Go to the top of the page
+Quote Post
Pyton_000
post 29.07.2020, 07:32:10
Post #4





Grupa: Zarejestrowani
Postów: 7 950
Pomógł: 1393
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


a może na poziomie filesystemu? Zrób sobie kopię obecnej tabelki, zmapuj ją do mysql, dodaj kolumnę i tyle, po wdrożeniu zrobisz sobie sync danych które doszły (ew. się zmieniły jeśli tak się może stać)

Możnaby użyć https://www.percona.com/doc/percona-toolkit...table-sync.html

Kod
pt-table-sync --execute h=host1,D=db,t=tbl1 h=host1,D=db,t=tbl2
Go to the top of the page
+Quote Post
GoldeNx3
post 29.07.2020, 07:46:20
Post #5





Grupa: Zarejestrowani
Postów: 228
Pomógł: 1
Dołączył: 24.12.2010

Ostrzeżenie: (0%)
-----


Zasada jest taka, że wszystko musi być wykonane przez PHP przez migtool, co za tym idzie tylko kod PHP i ewentualnie kod MySQL
Go to the top of the page
+Quote Post
Pyton_000
post 29.07.2020, 08:01:02
Post #6





Grupa: Zarejestrowani
Postów: 7 950
Pomógł: 1393
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


No to jaki masz problem? Nie umiesz użyć parametrów do query czy jak?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 7.08.2020 - 13:07