Mam taki problem. Są dwie tabele:
tabela_X - ma pole "Cena" /float8
tabela_Y - ma pole "Cena" /varchar(254)
Chcę przypisać wartości z tabela_Y do tabela_X za pomocą UPDATE:
UPDATE tabela_X SET Cena = tabela_Y.Cena WHERE tabela_X.cos = tabela_Y.cos;
Dodam, że obie tabele importuje z dbf przy pomocy Accessa (nie wiem czy
to dobre rozwiązanie, ale działa.
Czy macie pomysł jak to można zrobić ?
Pozdrawiam
Piotr Kocot
Zapomniałem napisać najważniejszego:
Ceny w tabela_Y mają taki format: 12,234,567.12 (12 milionów ...)
Pozdrawiam
Piotr
SELECT replace('12,234,567.12',',','')::float8;
zpp ms
--
We must never take these words too seriously
Words are very important but then if we take them too seriously
We destroy every thing...
Pozdrawiam
Rony
> Cos takiego jak:
> UPDATE tabela_X SET Cena = tabela_Y.Cena::float8 WHERE tabela_X.cos =
> tabela_Y.cos;
> nie przejdzie ?
Niestety:
ERROR: invalid input syntax for type double precision: " 1,146.7213"
Czy to nie wyjaśnia przyczyny? (rozwiązanie ktos tu już podał)
>
> SELECT replace('12,234,567.12',',','')::float8;
>
> zpp ms
>
Wielkie dzięki, działa.
Piotr
> Dodam, że obie tabele importuje z dbf przy pomocy Accessa (nie wiem czy
> to dobre rozwiązanie, ale działa.
ja do przyśpieszenia ładowania wsadów z dbf'a do postgtresa robię
trochę inaczej bo wszystko odbywa się pod freebsd:
1. najpierw dbf2txt z odpowiednim delimiterem pól
2. konwersja pl znaków w tych plikach txt
3. załadunek przy pomocy sqlowego copy
--
.---------- -------- ------ ---- ---- --- - -- -
| Bartek `saphire` Siebab http://bartek.siebab.net
Pozdrawiam
Rony