Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] INSERT około 5mln rekordów to możliwe?
termin
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 13.05.2003
Skąd: Wrocław

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


Witam, chcę wybrać z bazy MS SQL-a rekordy i wrzucić je do MySQL-a na którym stoi cały sklep internetowy. Problem w tym ze w jednej tabeli jest ponad 5 mln rekordów i tak się zastanawiam jak to najlepiej zrobić. Aktualizacja tej tabeli będzie następować raz na dzień w nocy wiec z czasem nie ma tu problemu.
Zrobiłem select z ms sql i od razu insert do mysql ale po chwili wyskoczył błąd ze php nie jest w stanie zadeklarować tak dużej ilości danych.
  1. Fatal error: Allowed memory size of 524288000 bytes exhausted (tried to allocate 8715264 bytes) in ......


czy ktoś kiedyś dokonywał takich duzych operacji i może się podzielić widzą jak to najlepiej zrobić?

Ten post edytował termin 11.07.2010, 10:49:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
prachwal
post
Post #2





Grupa: Zarejestrowani
Postów: 171
Pomógł: 18
Dołączył: 13.03.2009
Skąd: lublin

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


najszybciej to zrobisz tak:
generujesz plik TXT za pomocą BCP
bcp z lini poleceń
BCP z poziomu TSQL-a

następnie transportujesz taki plik FTP-em, to można np. zrobić za pomocą FTP.exe, lub czegokolwiek innego
FTP z commandline

następnie robisz z poziomu MySQL-a LOAD INFILE to jakiejś tabeli
LOAD INFILE

jak już coś takiego zrobisz to masz dane w MySQL-u i idzie już szybko

dla przykładu: ładowanie pliku o wielkości 400 MB ~12 mln rekordów to około 30 s

jeżeli zrobisz z tego ładny pliczek CMD i na końcu tego pliku odpalisz kod SQL odpowiedzialny za ładowanie danych to można to zupełnie zautomatyzować

Ten post edytował prachwal 11.07.2010, 22:11:20
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 03:33