![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 5.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Szukalem w wyszukiwarce i byly tylko tematy o wgrywaniu zawartosci pojedynczego pliku do bazy MySQL, na dodatek o scisle okreslonej strukturze (oddzielone przecinkami, srednikami itp) Problem polega na tym, ze mam okolo 600 plikow tekstowych o przykladowej nazwie kk353.txt, kk734 itp. Kazdy z tych plikow to normalny plik tekstowy z opisem motocykli (z kropkami i przecinkami, bez srednikow). I nie mam pojecia jak je wgrac automatycznie do MySQL. Wgrywanie reczne oczywiscie odpada, bowiem za duzo czasu to zajmie. W MySQL mam 4x pola: - ID (INT), autoincrement - Nazwa (VARCHAR), ktora stanowi nazwe pliku bez rozszerzenia (np. kk353) - Opis (TEXT), ktory stanowi zawartosc tego pliku (w tym przypadku pliku kk353) - Kategoria (VARCHAR), np. czesc plikow jest w kategorii Suzuki, a czesc w Kawasaki LOAD DATA INFILE wgrywa pojedynczy plik. Laczenie wszystkich plikow w jeden odpada, bo rowniez zabierze to zbyt wiele czasu, a poza tym lepiej jest chyba dodawac mniejsze pliki, prawda? W jaki sposob mozna to zrobic? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
Cytat LOAD DATA INFILE wgrywa pojedynczy plik. To zrób albo LOAD DATA INFILE w pętli, albo (co jest wolniejsze) zrób tak: 1. Pętle dla wszystkich plików 2. Wczytujesz plik 3. Bierzesz wiersz 4. Rozbijasz go do woli np. explode 5. Wpisujesz do bazy dane Insertem 6. Kolejna linia 7. Kolejny plik -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 407 Pomógł: 1 Dołączył: 4.03.2003 Skąd: warszawa Ostrzeżenie: (0%) ![]() ![]() |
Przy założeniu, że wszystkie pliki są w jednym katalogu:
To powinno działać, ale pewien nie jestem bo nie sprawdzałem. Przejżyj sobie dokładniej to load-data Nie zalapalem o co chodzi z tymi kategoriami. Jeżeli to mają być katalogi o nazwach "Kawasaki", "Suzuki", w których są te pliki txt to zrób jeszcze jedną pętelkę. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Pokaz przykladowa zawartosc plikow, czy wszystkie sa w identycznym formacie?
Mozesz najpierw polaczyc pliki w jeden, na linuxie to jest jedno polecenie i potem LOAD DATA IN FILE. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 5.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Oki, polaczylem nazwy plikow (oddzielone przecinkami) w jeden plik:
Kod #!/bin/sh nazwy=`ls -m` cat $nazwy > nazwy A jak polaczyc same opisy w jeden plik z oddzielajacym znakiem? Nie mam talentu do petelek. Ten post edytował stg 14.04.2006, 21:22:40 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.07.2025 - 12:02 |