Import danych z TMemoryStream do tabeli postgreSQL

0

Witam,

Czy da się zaimportować dane bezpośrednio ze stream-a do tabeli (dodanie zbioru wierszy)? Z tego co widzę postgreeSQL 8.2 ma funkcje COPY do importu danych z pliku, czy da się jej użyć także dla memorystream-a? Używam BCB6.0 i ADO.
Jeśli ktoś ma jakiś przykład w Delphi/BCB będę wdzięczny.

Pozdrawiam

0

a co to za dane? Jeśli chcesz je wsadzić do pola blob to tak

0

Nie, chodzi o zwykłe dane, zamiast robić pojedyncze inserty chce hurtem załadować dane. Widzę że muszę użyć COPY z STDIN ale jak załadować streama z ADO? Coś tak widzę że muszę zapisać jednak do pliku i zamiast STDIN podawać ścieżkę do pliku.

0

dalej nie wiem co chcesz zrobić. Jeśli mówisz o pliku z ilomaś insertami, który możesz "zaciągnąć" do bazy to przecież są to ZWYKŁE INSERTY i wykonuje się je jak każde inne zapytanie.

0

Przykładowo mam plik z danymi np csv, mogę przeskanować plik i dla każdego wiersza robić inserta ale jest to nieefektywne i z tego co wyszukałem lepiej użyć funkcji COPY ze ścieżką do pliku i ładować całe dane hurtem (nie wykonując pojedynczych insertów).

Ładowanie z pliku przetestuje ale chciałem uniknąć zapisywania memorystreama do tymczasowego pliku i wczytywania z pliku jeśli się da załadować dane bezpośrednio ze streama.

PS:
http://www.postgresql.org/docs/8.2/static/sql-copy.html

0

PS ładowanie z pliku działa ok tyle że memorystreama musiałem zapisać do tymczasowago pliku używając GetTempFileName i COPY podać ścieżkę do pliku.
Czy używając ADO da się jakoś załadować bezpośrednio streama? Z tego co widzę raczej nie ale może coś przeoczyłem.

0

wątpię aby dało się przekierować stdin tak aby przez ado to przepchnąć. BTW wiesz, że plik musisz mieć na serwerze albo na udostępnionym zasobie bo musi on być dostępny z serwera a nie z aplikacji

0

Tak wiem, wymagana jest pełna ścieżka do pliku. Z tego co przeszukałem też wątpię żeby się dało przepchnąć przez ADO więc pozostaje plik i to działa dobrze (właśnie przetestowałem).
Dzięki za pomoc :)

0

BTW czy MSSQL, Firebird albo SQLLite pozwalają załadować dane z pliku cvs? Mają odpowiednik funkcji COPY z PostgreSQL?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0