Konrad Karpieszuk

Konrad Karpieszuk WordPress Plugin
Compatibility
Assurance for WPML

Temat: wykonywanie zapytan SQL na pliku CSV

witam

Mam dużą ilość danych w pliku csv. Zastanawiam się czy jest jakis sposob aby wybrac z tego pliku tylko to co mnie interesuje jakims zapytaniem podobnym do zapytania SQL.

Znajduje duzo przykladow ale polegajacych na eksporcie danych z pliku csv do bazy mySQL i dopiero wtedy wybieranie sql-owymi zapytaniami tego, co nas interesuje. Wolalbym jednak nie ladowac tego do bazy.

szukam czegos na wzor:


<?php
$plik = "dane.csv";
$uchwyt = fopen($plik, 'r');

$csv = fgetcsv($uchwyt);

$odpytywacz = new SzukanaKlasaDoTego(); // tego wlasnie mi brakuje

$tablicaWynikow = $odpytywacz->sql("SELECT kwota, data FROM $csv WHERE nazwa = 'zakup browaru' ");

Temat: wykonywanie zapytan SQL na pliku CSV

Czemu nie chcesz ładować do bazy? Może by jednak załadować, ale nie na potężny RDBMS, tylko do tymczasowej bazy SQLite w pamięci?

EDIT:

Napisanie takiej klasy w oparciu o SQLite to zapewne 15 minut - godzina roboty, w zależności od poziomu doświadczenia :)Paweł S. edytował(a) ten post dnia 18.05.12 o godzinie 18:31

konto usunięte

Temat: wykonywanie zapytan SQL na pliku CSV

*** cofam ***Bartosz B. edytował(a) ten post dnia 18.05.12 o godzinie 19:07

konto usunięte

Temat: wykonywanie zapytan SQL na pliku CSV

Paweł S.:
Napisanie takiej klasy w oparciu o SQLite to zapewne 15 minut - godzina roboty, w zależności od poziomu doświadczenia :)
; o

http://dev.mysql.com/doc/refman/5.6/en/index.html

Temat: wykonywanie zapytan SQL na pliku CSV

Kamil Brenk:
Paweł S.:
Napisanie takiej klasy w oparciu o SQLite to zapewne 15 minut - godzina roboty, w zależności od poziomu doświadczenia :)
; o

W sensie, że nie? Policzyć kolumny, zczytać nagłówki, połączyć się z bazą w pamięci, załadować do bazy - maks 50 linijek kodu.

Odpalić zapytanie, sfetchować wyniki zwrócić w postaci tablicy - maks 30 linijek kodu.

Ile to może zająć twoim zdaniem?

konto usunięte

Temat: wykonywanie zapytan SQL na pliku CSV

Paweł S.:
Kamil Brenk:
Paweł S.:
Napisanie takiej klasy w oparciu o SQLite to zapewne 15 minut - godzina roboty, w zależności od poziomu doświadczenia :)
; o

W sensie, że nie? Policzyć kolumny, zczytać nagłówki, połączyć się z bazą w pamięci, załadować do bazy - maks 50 linijek kodu.

Odpalić zapytanie, sfetchować wyniki zwrócić w postaci tablicy - maks 30 linijek kodu.

Ile to może zająć twoim zdaniem?
Ok, zwracam honor - źle zrozumiałem wcześniej. Myślałem, że chcesz napisać nakładkę SQL dla CSV w 15 minut :) SQL to nie tylko "SELECT kolumny FROM tabelki WHERE warunki".

Btw. do importu CSV mamy LOAD DATA INFILE.

Temat: wykonywanie zapytan SQL na pliku CSV

No właśnie. Generalnie SQLite właśnie do takich celów (m.in.) stworzono. Jutro mogę się zabrać do napisania takiej klasy (dziś wódeczka u kolegi ;) ), tylko niech ktoś da znać, że się przyda, bo PHP to nie "mój" język, więc to by było raczej takie pisanie 4fun :)

Ogólnie rzecz biorąc, na takiej tymczasowej RAM-owej bazie SQLite można wykonywać dowolne podstawowe operacje, czyli SELECT, INSERT, UPDATE (ale nie ALTER TABLE, którego SQLite niestety nie obsługuje :( ), a potem analogicznie załadować wyniki z bazy z powrotem do pliku CSV.
Adam Pawliczek

Adam Pawliczek Usability expert, UX
designer,
Interaction
specialist

Temat: wykonywanie zapytan SQL na pliku CSV

Paweł S.:
SELECT, INSERT, UPDATE (ale nie ALTER TABLE, którego SQLite niestety nie obsługuje :( )
Już tak: http://www.sqlite.org/lang_altertable.html

konto usunięte

Temat: wykonywanie zapytan SQL na pliku CSV

Kamil Brenk:
Btw. do importu CSV mamy LOAD DATA INFILE.

taki numer to w MySQL a nie SQL lite

http://stackoverflow.com/questions/697004/bulk-load-da...

Następna dyskusja:

zapis do pliku CSV z obecna...




Wyślij zaproszenie do