Jak szybko przenieść zawartość pliku tekstowego do tabeli, PHP Skrypty


[MySQL][PHP] Jak szybko przenieść zawartość pliku tekstowego do tabeli?

0x01 graphic

Chcesz umieścić w tabeli dane pochodzące ze zwykłego pliku tekstowym, aby zachowana została struktura tabeli. O wiele łatwiej przeniesiesz w ten sposób dane z arkusza kalkulacyjnego do tabeli w bazie danych. To również najszybszy sposób aby umieścić w bazie danych dużą ilość informacji wprost z pliku txt.

0x01 graphic

Zamiast pobierać z pliku informacje i wstawiać je do tabeli za pomocą pętli i polecenia SQL INSERT INTO, można sprawę uprościć wstawiając hurtem dużą ilość danych znajdujących się w pliku tekstowym jednym poleceniem. Zobacz jak tego dokonać.

W MySQL domyślny tryb wstawiania danych z pliku przewiduje, że pola w pliku tekstowym rozdzielone są za pomocą tabulatora, np.

a1 b1 c1

a2 b2 c2

a3 b3 c3

Stosując polecenie MySQL:

LOAD DATA INFILE "/dane.txt" INTO TABLE pracownicy;

dodamy do tablicy pracownicy zawartość pliku tekstowego dane.txt (trzy rekordy), dla pierwszych trzech pól tabeli, np. imie, nazwisko, ulica. Oto przykład, gdzie za pomocą języka PHP do tabeli dopisana zostanie zawartość pliku tekstowego:

<?

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

$wynik = mysql_select_db("baza1",$baza);

if ($wynik) {

$wynik = mysql_query('LOAD DATA INFILE "/dane.txt"

INTO TABLE pracownicy', $baza);

if ($wynik) echo "Tabela została wypełniona danymi z pliku<br>";

}

mysql_close($baza);

}

?>

Ważne jest położenie pliku tekstowego. Ścieżka do niego powinna być pełna (a nie względna), identyczna jak ścieżka na dysku, a więc np. /home/www/txt/dane.txt.

W praktyce często zdarza się, że pola nie są oddzielone tabulatorem, ale innym znakiem, np.:

raz|dwa|trzy

raz|dwa|trzy

raz|dwa|trzy

raz|dwa|trzy

Wtedy do polecenia należy dodać informację o znaku rozdzielającym pola (np. często spotykany znak "|") w postaci FIELDS TERMINATED BY "znak":

LOAD DATA INFILE "/dane.txt" INTO TABLE pracownicy

FIELDS TERMINATED BY "|";

Oczywiście polecenie nie musi być wywoływane ze skryptu PHP, równie dobrze możesz wejść do programu mysql i wywołać polecenie wprost z konsoli.

Jest jeszcze jedna ważna rzecz - gdy umieszczasz zawartość pliku, dane są dodawane do tabeli, która może zawierać już inne rekordy. Gdy dodasz ten sam plik kilka razy dane zostaną powielone. Jeżeli chcesz usunąć stare dane i wypełnić tabelę nowymi z pliku tekstowego, musisz najpierw skasować zawartość całej tabeli, a potem dodać zawartość z pliku tekstowego. Jak w kodzie poniżej:

<?

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

$wynik = mysql_select_db("baza1",$baza);

if ($wynik) {

$wynik = mysql_query("TRUNCATE TABLE pracownicy", $baza);

if ($wynik) echo "Dane z tabeli zostały usunięte<br>";

$wynik = mysql_query('LOAD DATA INFILE "/dane.txt"

INTO TABLE pracownicy', $baza);

if ($wynik) echo "Tabela została wypełniona danymi z pliku<br>";

}

mysql_close($baza);

}

?>

To w zasadzie najważniejsze informacje. Czasem możesz jeszcze chcieć pominąć podczas dodawania pierwsze linijki pliku (gdzie może znaleźć się opis zawartości). Wtedy należy dodać kolejne polecenie IGNORE x LINES:

LOAD DATA INFILE "/dane.txt" INTO TABLE pracownicy

FIELDS TERMINATED BY "|" IGNORE 2 LINES;

Polecenie zignoruje dwie pierwsze linijki pliku tekstowego, a resztę umieści w tabeli.



Wyszukiwarka

Podobne podstrony:
Jak wybrać losowy rekord (lub losowe rekordy) z tabeli, PHP Skrypty
Jak wypisać w tabeli zawartość pliku tekstowego z polami oddzielonymi separatorem, PHP Skrypty
Jak wypisać na ekranie w PHP zawartość dowolnej tabeli, PHP Skrypty
Jak stworzyć indeks pierwszych liter dla wybranej kolumny z tabeli, PHP Skrypty
jak wypisac zawartosc bazy danych dBase (dbf), PHP Skrypty
Jak sprawdzić typy i atrybuty ustawione dla każdej z kolumn tabeli, PHP Skrypty
Jak automatycznie pokolorować na przemian wiersze tabeli, PHP Skrypty
Jak wysłać ze strony WWW e-mail z dowolnym załącznikiem, PHP Skrypty
Jak stworzyć prostą wyszukiwarkę dla własnych stron WWW, PHP Skrypty
Jak uzyskać kolejny numer (id) ostatnio wstawionego rekordu, PHP Skrypty
Jak pobrać i zapisać na dysk wskazane strony WWW, PHP Skrypty
Jak wypisać wszystkie anagramy podanego wyrazu (permutacja ciągu, PHP Skrypty
Jak zmienić tło strony w zależności od aktualnej godziny, PHP Skrypty
Jak zablokować powtórne przetwarzanie formularzy przy odświeżaniu strony, PHP Skrypty
jak uzywajac szyfru cezara zakodowac lub odkodowac wiadomosc, PHP Skrypty
jak logowac unikatowe numery IP uzytkownikow z calego dnia, PHP Skrypty
Jak udostępnić stronę tylko dla wybranych numerów IP, PHP Skrypty
jak wykonac sortowanie przez wstawianie algorytm inserion sort, PHP Skrypty

więcej podobnych podstron