Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt wciągający dane z csv do zapełnionej tabeli w MySQL
Forum PHP.pl > Forum > PHP
Yans
Witajcie,

Robię migrację pewnego projektu. Po migracji okazało się, że jest jeszcze jedna tabela uzupełniająca dodatkowymi kilkoma kolumnami rekordy w innej większej tabeli

Mam sobie tabelę miejsc [to jest ta większa tabela] i wciągam do niej dane z pliku CSV [eksport z tabeli źródłowej] takim oto skryptem:
  1. if(isset($_GET['areas'])){
  2. $row = 0;
  3. if (($uchwyt = fopen ("tabela_areas.csv","r")) !== FALSE) {
  4.  
  5. while (($data = fgetcsv($uchwyt, 2500, ",")) !== FALSE) {
  6.  
  7. if($row < 3000){
  8. $sql = "INSERT INTO Areas (Id,Name,LogoKey,Communication,StartPointLat,StartPointLong,History,Geograph
    icalDescription,TouristDescription,EconomyDescription,Curiosities,CountryStates_I
    d,StateCounties_Id,CountyCommunes_Id,ZipCode,MapZoom,OverviewPhotoKey,DetailPhoto
    Key,GeoRegions_Id,Users_Id,State,Objects_Id,Tags,FilterMountain,FilterSea,FilterF
    orrest,FilterLake,FilterHit,UsersVote,GeoRegionProvince_Id,GeoRegionSubProvince_I
    d,GeoRegionMacroReg_Id,Icon)
  9. VALUES('".$data[0]."','".$data[1]."','".($data[2])."','".$data[3]."','".$data[4]."','".$data[5]."','".$data[6]."','".$data[7]."','".$data[8]."','" .$data[9]."','".$data[10]."','".$data[11]."','".$data[12])."','".$data[13]."','".$data[14]."','".$data[15]."','".$data[16]."','".$data[17]."' ,'".$data[18]."','".$data[19]."','".$data[20]."','".$data[21]."','".$data[22])."','".$data[23]."','".$data[24]."','".$data[25]."','". $data[26]."','".$data[27]."','".$data[28]."','".$data[29]."','".$data[30]."','".$data[31]."','".($data[32])."')";
  10. $this->main->DB->Execute($sql);
  11. }
  12. $row++;
  13. }
  14. fclose ($uchwyt);
  15. }
  16. }


Tabela uzupełniająca przechowuje klucz, który ma swój odpowiednik w powyższej zapełnianej tabeli, ale nie wiem jak napisać skypt, który do tej już zapełnionej tabeli places dociągnie z innego pliku CSV [wygeneruję go] 5 kolumien, które już dodałem do docelowej tabeli places.

Obecnieta dodatkowa tabela ma pola: Id [dla nas nieważne], Areas_Id [super ważne bo to klucz główny w tabeli places], Street, Phone, Email, WebPage, Name

Ostatecznie skrypt jaki muszę stworzyć musi do tabeli places dodać rekord po rekordzie dane z tego drugiego pliku CSV, ale dodając te 5 pól [Street, Phone, Email, WebPage, Name] do rekordów zawierających dokładnie to samo Id co Place_Id w tabeli dodatkowej.

Jak to napisać? - proszę o pomoc.

Pozdr. Maciej
Pilsener
1. Wrzucasz pliki od razu do bazy zapytaniem LOAD DATA INFILE
2. Obrabiasz zapytaniami sql - po co kombinować z danymi w plikach?
Yans
Gdybym wiedział jak to zrobić to bym nie pytał smile.gif

Nie korzystam z bazy danych z commandilne - nie mam takiej możliwości. Serwer stoi w nazwa.pl - jedyne co mogę to PHPMyAdmin

M
Pilsener
Skoro działa Ci zapytanie Insert Into to LOAD DATA i inne też zadziałają, jak chcesz złączyć tabelę bazy danych z plikiem? Przecież dla każdego klucza z tabeli trzeba przeszukać cały plik by pobrać odpowiednią linię, dużo klepania kodu i żadnej gwarancji, że się nie wysypie z braku wydajności, w dodatku dla jakiejś jednorazowej akcji. Dlaczego nie wrzucić plików do bazy i jednym zapytaniem nie załatwić sprawy?

I wiem, że myadmin nie jest dobry, ale jeśli nie masz dostępu do bazy z zewnątrz to sobie przygotuj migrację w programie na którym się znasz a potem wkleisz do myadmin gotowe zapytania.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.