Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wlewanie danych do bazy, how to??
mattie
post 14.04.2006, 09:50:36
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.04.2006

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


Witam wszystkich serdecznie i na początek Wesołych Świąt:)

Mam pytanie.
Potrzebuje wlać do bazy danych dane z pliku tekstowego.
Problem w tym, że dane w pliku tekstowym mają taką postać:

Kod
1;1;1;"OWNER"
2;2;2;"OWNER"
3;3;2;"DISPONENT"

itd.

Tabela do której mam to wlać wygląda następująco:
  1. +--------+----------------------+------+-----+---------+-------+
  2. | FIELD | Type | NULL | KEY | DEFAULT | Extra |
  3. +--------+----------------------+------+-----+---------+-------+
  4. | idD | smallint(5) UNSIGNED | YES | | | |
  5. | idK | smallint(5) UNSIGNED | NO | PRI | 0 | |
  6. | nrR | smallint(5) UNSIGNED | NO | PRI | 0 | |
  7. | rodzaj | char(10) | NO | | | |
  8. +--------+----------------------+------+-----+---------+-------+


Problem jest następujący: potrzebuje tak spreparować dane aby wartość w cudzysłowach wlała sie do tabeli bez tych cydzysłowów.
Zastanawiam się teraz czy najpierw muszę tak wyedytować plik aby nie było tych cudzysłowów czy może da się to zrobić jakąś kombinacją w poleceniu LOAD DATA INFILE.
Plik z danymi jest ogromny więc ręczna edycja odpada. Myślę nad jakimś skryptem co to pozmienia ale najlepsze było by polecenie Mysql'a.

Za pomysły z góry dziękuję:)


--------------------
Slackware 11.0 kernel 2.6.18
php 5.2.0
MySQL 5.0.27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
FiDO
post 14.04.2006, 10:53:44
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Pomysl juz sam napisales. A jak go zrealizowac to juz sobie mozesz przeczytac na: http://dev.mysql.com/doc/refman/5.0/en/load-data.html


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
mattie
post 14.04.2006, 14:48:21
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.04.2006

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


Hehe dzięki za mobilizację do myślenia:)
Poradziłem sobie po przeczytaniu dokumentacju wszystko się rozjaśniło polecenie:
  1. LOAD DATA INFILE 'disp.txt'
  2. INTO TABLE
  3. dysponuje FIELDS terminated BY ';' OPTIONALLY ENCLOSED BY '"' LINES terminated BY '\n';

załatwiło wszystkie moje utrapienia:)

Zastanawiam się jeszcze tylko co oznaczają ostrzerzenia Warnings powstałe podczas wlewania danych do bazy.
Zdażyło mi się to kilka razy ale wszystkie dane trafiły na swoje miejsce.


--------------------
Slackware 11.0 kernel 2.6.18
php 5.2.0
MySQL 5.0.27
Go to the top of the page
+Quote Post
FiDO
post 14.04.2006, 16:33:41
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Jesli mozesz to podaj tresc kilku z nich to moze bedzie mozna cos powiedziec na ten temat. Tak na czuja to moge strzelac, ze gdzies dlugosc danych przekroczyla rozmiar kolumny i bylo info o tym, ze zostalo to przyciete do rozmiaru kolumny.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
mattie
post 14.04.2006, 19:43:35
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.04.2006

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


Właśnie podejrzewam,że problem leży właśnie w definicji tabeli. Podczas wpuszczania pliku txt do bazy niektóre kolumny tabeli były nie wypełniane i to chyba spowodowało ostrzeżenia. Plik był duży ponad milion wierszy. Sam zapis poszedł szybko tzn ok. 20s ale później przeprowadziłem konwersję z MyISAM do InnoDB i to trwało ponad godzinę. Zastanawiam się czy jesli przed zapisem danych od razu tablice ustawię na type=Innodb zaoszczedzę czas tworzenia bazy czy może spowoduje to wydłużenie czasu wlewania danych. Próbował ktoś może takiej sztuczki??smile.gif


--------------------
Slackware 11.0 kernel 2.6.18
php 5.2.0
MySQL 5.0.27
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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 01:20