Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Import danych.
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
Blackhole
Jak zaimportować do bazy dane z pliku CVS :?:
ser
proponuje import do Accesa i export przez ODBC
ewentualnie importer via php,perl itp
m.
Blackhole
To hell with Access! tongue.gif

A import via php to jak :?:
ser
ładujesz plik do zmiennej>parsowanie w pętli>insert
dr_bonzo
http://www.mail-archive.com/pgadmin-suppor...g/msg03222.html
Use psql and the pgsql 8.0 COPY command. Currently, this isn't currently supported in pgadmin3 (we *do* have export)

Na postrgesie sie nie znam, ale zasze mozna to zrobic za pomoca skryptu.
Blackhole
Zrobiłem sobie programik w C++ zamieniający plik CVS na skrypt dodający dane do bazy. To chyba najłatwiejsze rozwiązanie.
ser
libpq czy embedded SQL?
Blackhole
Bez żadnych bibliotek. Zrobiłem w czystym C/C++ tak tylko, że plik CVS jest przerabiany w plik zawierający polecenia "INSERT INTO". Potem uruchamiam go w psql i mam dane z pliku CVS w bazie. Może to niezbyt dobre rozwiązanie, ale innego nie mam, a jak dotąd mi wystarcza.
mhs
Nie najnowszy wątek, ale odpowiem – być może w przyszłości przyda się komuś.

Nie jest konieczne pisanie dodatkowych programów by można zaimportować dane do bazy danych z pliku CSV. Do tego celu z psql’a można wykorzystać polecenie \copy.


Kod
\copy table [ ( column_list ) ] { from | to } filename | stdin | stdout [ with ] [ oids ] [ delimiter [as] ’character’ ] [ null [as] ’string’ ]



przykład:

Kod
\COPY test FROM 'c:/import.csv' USING DELIMITERS ','
Blackhole
Ok, wielkie dzięki smile.gif Dobrze wiedzieć o takiej możliwości.
Cezar708
Witam,

wiem, że wątek odgrzewam po pnad 3 latach, ale chyba niepotrzebne będzie zakładanie nowego tematu.

Otóż mam podobny problem: czy jest możliwość użycia polecenia COPY BEZPOŚREDNIO z poziomu PHP, a nie jak powyżej z poziomu psql?

chodzi mi o coś takiego (oczywiście to nie działa)

  1. <?php
  2. pg_query($dbHandle, "
  3. CREATE TABLE friend
  4. (
  5. firstname char(15),
  6. lastname char(15),
  7. city char(15),
  8. age int4
  9. ");
  10. COPY tabela FROM 
  11. 'imie1|nazwisko1|city1|10
  12. imie2|nazwisko2|city1|11
  13. imie3|nazwisko3|city1|12
  14. .'
  15. USING DELIMITERS '|'
  16. ");
  17. ?>


czy jest jakaś możliwość zrobienia tego z poziomu PHP bez tworzenia pliku? Czy może jest jakieś inne obejście?
chriswebber
Zaimportuj plik plik .csv za pomocą file_get_contents() otrzymasz string - a żeby zrobić z nim coś sensownego to zrób sobie np. explode () po ";" czy "," i otrzymujesz 2 wymiarową tablicę z której wyciągasz dane for() i wrzucasz do bazy - wada jak dancyh jest więcej to limity co do czasu wykonania skryptu bądź wielkości zajmowanej pamięci operacyjnej lubią być przekraczane ....
Sedziwoj
Cytat(chriswebber @ 6.05.2008, 15:31:59 ) *
Zaimportuj plik plik .csv za pomocą file_get_contents() otrzymasz string - a żeby zrobić z nim coś sensownego to zrób sobie np. explode () po ";" czy "," i otrzymujesz 2 wymiarową tablicę z której wyciągasz dane for() i wrzucasz do bazy - wada jak dancyh jest więcej to limity co do czasu wykonania skryptu bądź wielkości zajmowanej pamięci operacyjnej lubią być przekraczane ....


Już lepiej http://www.php.net/manual/en/function.fgetcsv.php
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.