Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Import z pliku CSV czy lepiej XML?
Forum PHP.pl > Forum > PHP
kukix
Witam.
Zastanawiam się jak najwydajniej zrobić import danych z pliku. Czy lepszym rozwiązaniem bedzie import z pliku CSV czy Xml?

Dodam, że plik XML waży prawie 10MB, CSV tylko 5,5MB.

Co będzie bardziej efektywne i mniej obciazy serwer biorac pod uwage ilość pozycji w pliku 500, 4 000, 10 000, 30 000 pozycji.

Bede wdzięczny za wszelkie spostrzezenia.

Import u mnei wygląda tak:
  1. $uchwyt = fopen ($path_name,"r");
  2. while (($data = fgetcsv($uchwyt, 6000, ";")) !== FALSE) {
  3.  
  4. array_walk ($data, 'zmiana_utf');
  5.  
  6. //WYKONYWANY KOD
  7.  
  8. }
  9. fclose ($uchwyt);
  10.  
marcio
Zalezy od jego struktury jesli nie jest ona zbyt skomplikowana to na pewno csv/ini beda szybsze niz parsowanie xml'a...
www.aukcje.fm
Moim zdaniem tylko XML, u mnie w serwisie mamy importy z csv i z xml i xml wygrywa zdecydowanie.

Z csv są problemy często z kodowaniem lub z przecinkami i znakami interpunkcji. Xml jest szybki i łatwo można zmienić schemat i dopasować.

Pozdrawiam
Damian
Pilsener
Cytat
import danych z pliku
- od kiedy to dane trzymamy w pliku XML? dry.gif Zrzut tabeli z bazy też robimy w XML? A może w HTML? Plik .csv jest uznanym standardem i co najważniejsze, można dodać od razu do bazy cały plik przy pomocy zapytania LOAD DATA INFILE... a wcześniej łatwo go spreparować przy pomocy pętli while+fgets.
Cytat
csv są problemy często z kodowaniem lub z przecinkami i znakami interpunkcji. Xml jest szybki i łatwo można zmienić schemat i dopasować
- jakie problemy z kodowaniem? Jeśli kodowanie jest nieznane to jest rozpoznawane a następnie konwertowane podczas importu do bazy, ten sam problem jest przy xml. Z przecinkami problem? Znakami interpunkcji? A może to w xml jest problem ze znakami < czy &? Pierwsze słyszę, z sukcesem importowałem pliki .csv nawet po parę gigabajtów, ciekawe, co można by zrobić z podobnym plikiem w xml? I jak może być szybki skoro już na starcie waży dwa razy tyle i nie obsługuje go baza? A co ze specyfikacją elementów? Gdy dostaniesz plik .csv od razu wiesz, co to jest a weź wyślij komuś xml i każ dodać do bazy, powie pewnie sciana.gif a potem dostal.gif
kalmaceta
Cytat(Pilsener @ 17.12.2010, 21:59:07 ) *
- od kiedy to dane trzymamy w pliku XML? dry.gif Zrzut tabeli z bazy też robimy w XML?

od kiedy powstał XML. Zrzut w większośc baz zrobimy do XML, w niektórych i do json - to że MySQL nie potrafi tego z konsoli, nie świadczy o słabości XML.

Cytat(Pilsener @ 17.12.2010, 21:59:07 ) *
Plik .csv jest uznanym standardem i co najważniejsze, można dodać od razu do bazy cały plik przy pomocy zapytania LOAD DATA INFILE... a wcześniej łatwo go spreparować przy pomocy pętli while+fgets.
- jakie problemy z kodowaniem? Jeśli kodowanie jest nieznane to jest rozpoznawane a następnie konwertowane podczas importu do bazy, ten sam problem jest przy xml. Z przecinkami problem? Znakami interpunkcji? A może to w xml jest problem ze znakami < czy &? Pierwsze słyszę, z sukcesem importowałem pliki .csv nawet po parę gigabajtów, ciekawe, co można by zrobić z podobnym plikiem w xml? I jak może być szybki skoro już na starcie waży dwa razy tyle i nie obsługuje go baza? A co ze specyfikacją elementów? Gdy dostaniesz plik .csv od razu wiesz, co to jest a weź wyślij komuś xml i każ dodać do bazy, powie pewnie sciana.gif a potem dostal.gif

Jeśli myślisz, że XML nie jest uznanym standardem to się mylisz. Dwa - XML na deklaracje kodowania, niczego nie rozpoznaje - "zgaduje". Trzy - jeśli zamykamy się w gronie użytkowników MySQL to faktycznie CSV może wydawać się lepszy, ale w większości programów wymaga deklaracji separatorów, kodowania, znaków zawierających. Cztery - xml'e otworzysz nawet w przeglądarce, nawet w IE - do strawnego przeglądu. Pięć: - XML nie ma problemów z żadnymi znakami, ew. program go inaczej(czyt. źle) zapisuje (jak Excel CSV).

Poza zbędnymi(czyt. nieprawdziwymi) komentarzami Pilsener, zgadzam się z nim, wybrałbym CSV jeśli chodzi o MySQL.
Ormin
XML nie służy przetrzymywaniu informacji, nie po to był stworzony i nie nadaje się do tego , blednie wobec chociażby YAMLa.
darko
Xmla używa się głównie do wymiany danych w obie strony pomiędzy aplikacjami/skryptami, gdyż xml - oprócz samych danych - zawiera informacje umożliwiające rozpoznanie relacji pomiędzy tymi danymi i pozwala odzwierciedlić pewną hierarchię czy strukturę, jaką te dane stanowią, stąd pewien narzut w stosunku do plików csv. Jeśli chodzi o wydajność, to w przypadku bardzo dużej ilości danych korzystniej będzie użyć formatu csv, gdyż plik csv zawiera znacznie mniej informacji do przetworzenia. Swoją drogą phpmyadmin umożliwia eksport danych zarówno do csv, jak i do xmla.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.