Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wczytanie złożonych danych z pliku tekstowego do kilku tabel
comzit
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 14.11.2003
Skąd: Warszawa

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


Mam plik tekstowy z danymi. Każdy wiersz ma kilkanaście pól, pola są oddzielone znakiem np. ^ . Muszę teraz z każdego wiersza wybrać określone pola i wstawić je do różnych tabel w bazie. Pierwsze dwa pola do jednej tabeli, 4 kolejne do innej a kilka innych pól do trzeciej tabeli. Przy czym np. pierwsze 2 pola w całym pliku mają tylko 3 różne wartości (w pozostałych wierszach się powielają). Podobnie jest w pozostałych polach.
Wczytałem plik, rozbiłem na wiersze i pola, ale teraz nie wiem jak to wszystko pogrupować i zrobić z tego 3 zapytania do bazy.


--------------------
Projektowanie, tworzenie, optymalizacja i pozycjonowanie efektywnych stron www dla biznesu.
Go to the top of the page
+Quote Post
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Sprawa dla mnie jest prosta, parsujesz plik:
  1. $uchwyt = fopen($pliczek,'r');
  2. while(!feof($uchwyt)){
  3. if(fgets($uchwyt)){
  4. //tu obrabiasz konkretną linijkę z pliku
  5. }
  6. }
  7. fclose($uchwyt);


I dzielisz dane na kilka plików w układzie takim, jakim chcesz to mieć (kwestia odpowiednio dobranych instrukcji warunkowych w pętli while), następnie każdy z tych plików dodajesz do bazy zapytaniem LOAD DATA INFILE.
Go to the top of the page
+Quote Post
comzit
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 14.11.2003
Skąd: Warszawa

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


Dzięki za chęć pomocy ale tyle to ja wiem. Nie wiem jak porozbijać jedną linijkę na kilka rożnych zmiennych tak aby można je potem było przypisać do zapytania SQL.

Może bardziej sprecyzuje pytanie. Nie chodzi mi o zwykłe odczytanie pliku tekstowego.
Wiersz w pliku powiedzmy wygląda tak:
^id_marki^marka^nazwisko^rok^miasto^cos_tam1^cos_tam2^cos_tam3^
Ponieważ plik nie jest wielki (kilkadziesiąt kilobajtów) i będzie wczytywany raz na tydzień wczytuję go od razu w całości do tablicy.

Nie wiem tylko:

id_marki i marka muszę wczytać do tabeli , ale może być potrzeba dodania rekordu, aktualizacji lub jego usunięcia, w dodatku te dane powielają się w całym pliku (są tylko 3 unikalne wartości).

Podobnie jest przy kolejnych dwóch tabelach. Tylko, że tam jeden rekord zawiera 4 lub 7 różnych wartości, przy czym jedna tabela zawiera dane które już występują w innych tabelach (są to identyfikatory).

Ten post edytował comzit 16.12.2009, 19:10:32


--------------------
Projektowanie, tworzenie, optymalizacja i pozycjonowanie efektywnych stron www dla biznesu.
Go to the top of the page
+Quote Post
Pilsener
post
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Użyj explode:
  1. list($id_marki,$marka,$nazwisko,$rok) = explode("^",$linia_pliku);
- teraz sobie zmienne np. $marka zapisuj do oddzielnych plików i ustaw takie warunki, jakie chcesz

Cytat
może być potrzeba dodania rekordu, aktualizacji lub jego usunięcia
- dodanie lub aktualizację załatwisz zapytaniem REPLACE, natomiast klucze rekordów które masz usunąć wrzucasz do oddzielnej tablicy, potem wystarczy proste zapytanie: delete from tabela where klucz in(1,2,34,56,...)
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 Aktualny czas: 19.08.2025 - 14:46