![]() |
![]() |
![]()
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:
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 |
|
|
![]() |
![]()
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 :/
|
|
|
![]()
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:
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 |
|
|
![]()
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 :/
|
|
|
![]()
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??
![]() -------------------- Slackware 11.0 kernel 2.6.18
php 5.2.0 MySQL 5.0.27 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 01:20 |