Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 10.03.2012 Ostrzeżenie: (0%)
|
Witam.
Tak szukam, szukam i nie mogę znaleźć odpowiedniego rozwiązania. Może ktoś mnie naprowadzi na właściwe tory. Dodam, że nie zajmuję się programowaniem zawodowo - raczej z doskoku. Więc tak, mam kod, który pobiera wiersze z pliku csv:
Wszystko ładnie działa, poszczególne wiersze wskakują do sformatowanej tabelki i teraz chciałbym załadować te dane do tabeli w bazie MySQL. Kombinuję od jakiegoś czasu z LOAD DATA INFILE ale nie mogę tego poprawnie rozwiązać. Może jakieś sugestie ?. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%)
|
Straszny misz-masz, jednocześnie wyświetlasz i dodajesz do bazy, co zdecydowanie utrudnia zrozumienie tego kodu. Tak naprawdę do kodu, którego zadaniem jest wyświetlić dane z pliku csv wystarczy dopisać 9 linijek (z uwzględnieniem nawiasów zamykających), aby te dane jednocześnie dodawać do bazy danych. Zastanowiłbym się jednak nad odseparowaniem tych dwóch funkcjonalności. Niestety w tej chwili skrypt nie ma prawa działać prawidłowo, bo w miejscu, w którym generujesz zapytanie SQL nie masz dostępu do informacji o nazwach poszczególnych kolumn tabeli w bazie danych - tablica $data jest tablicą jednowymiarową i zawiera dane pochodzące z aktualnie przetwarzanego wiersza pliku csv, Ty tymczasem używasz jej jako tablicy dwuwymiarowej (gdzieś tam w kodzie masz $data[0][0]). Proponowałbym najpierw wykonać import danych, tzn. przepisać dane z pliku do bazy danych, a później wyświetlić dane, ale już "te" pobrane z bazy. Żeby nie "zarżnąć" skryptu warto skorzystać z zapytania MULTI-INSERT i wykonywać je co np. 50 rekordów (to ze wzglądów na ograniczenia MULTI-INSERTA).
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 10.03.2012 Ostrzeżenie: (0%)
|
Straszny misz-masz, jednocześnie wyświetlasz i dodajesz do bazy, co zdecydowanie utrudnia zrozumienie tego kodu. Tak naprawdę do kodu, którego zadaniem jest wyświetlić dane z pliku csv wystarczy dopisać 9 linijek (z uwzględnieniem nawiasów zamykających), aby te dane jednocześnie dodawać do bazy danych. Zastanowiłbym się jednak nad odseparowaniem tych dwóch funkcjonalności. Niestety w tej chwili skrypt nie ma prawa działać prawidłowo, bo w miejscu, w którym generujesz zapytanie SQL nie masz dostępu do informacji o nazwach poszczególnych kolumn tabeli w bazie danych - tablica $data jest tablicą jednowymiarową i zawiera dane pochodzące z aktualnie przetwarzanego wiersza pliku csv, Ty tymczasem używasz jej jako tablicy dwuwymiarowej (gdzieś tam w kodzie masz $data[0][0]). Proponowałbym najpierw wykonać import danych, tzn. przepisać dane z pliku do bazy danych, a później wyświetlić dane, ale już "te" pobrane z bazy. Żeby nie "zarżnąć" skryptu warto skorzystać z zapytania MULTI-INSERT i wykonywać je co np. 50 rekordów (to ze wzglądów na ograniczenia MULTI-INSERTA). Dzięki za uwagi, ale potrzebuję poprawnego fragmentu kodu - jak utworzyć tablicę $data dwuwymiarową, by później dostać się do konkretnych pól w odpowiednich wierszach ?. Ok - rozwiązałem problem innym sposobem. Szkoda, że nie doczekałem się jakiejś konkretnej pomocy ze strony tego forum. Dzięki za wszelkie chęci (IMG:style_emoticons/default/wink.gif) . Zamykam temat. |
|
|
|
hettmix CSV import do MySQL 10.03.2012, 20:58:19
cycofiasz Zwykły insert wystarczy (o ile nie masz tam astron... 10.03.2012, 21:00:26 
hettmix Cytat(cycofiasz @ 10.03.2012, 21:00:2... 11.03.2012, 13:45:52
viking Myślałeś żeby:
a) Przepisać to pod PDO z przygotow... 11.03.2012, 14:16:34 
hettmix Cytat(viking @ 11.03.2012, 14:16:34 )... 11.03.2012, 17:57:26
mortus Ale przecież pierwszy wiersz wyklcza warunek if(... 11.03.2012, 18:40:28 
hettmix Cytat(mortus @ 11.03.2012, 18:40:28 )... 11.03.2012, 19:20:01
Pilsener Najlepiej się nie rozdrabniać i użyć LOAD DATA INF... 12.03.2012, 01:21:16 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 20:00 |