[SOLVED] Migracja z HSQL na PostgreSQL
[SOLVED] Migracja z HSQL na PostgreSQL
Witam ponownie,
ponieważ moja baza musi mieć bardziej rozbudowaną obsługę dat tym samym postanowiłem przenieść się na postgresql. I od razu schodek, zwykłe przeniesienie tabel sposobem drag n drop lub copy and paste nie przynosi żadnych rezultatów. Nie przenosi się ani struktura ani dane tabel. Czy istnieje jakiś sposób aby przerzucić tabele z danymi do bazy w postgresql?
Pozdrawiam
ponieważ moja baza musi mieć bardziej rozbudowaną obsługę dat tym samym postanowiłem przenieść się na postgresql. I od razu schodek, zwykłe przeniesienie tabel sposobem drag n drop lub copy and paste nie przynosi żadnych rezultatów. Nie przenosi się ani struktura ani dane tabel. Czy istnieje jakiś sposób aby przerzucić tabele z danymi do bazy w postgresql?
Pozdrawiam
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
Debian GNU/Linux 64 bit
Re: Migracja z HSQL na PostgreSQL
Poziom niski:
po rozpakowaniu unzip-em pliku odb w pliku database/script znajdziesz SQL-owe polecenia tworzące Twoje tabele i więzy oraz perspektywy. Dane są w pliku database/data, niestety binarnym. Możesz tabelę po tabeli przenosić przez Calca albo przez pliki CSV/TSV.
Poziom średni:
w oknie poleceń SQL wykonaj polecenieUtworzy ono plik "plik.sql" z SQL-ową definicją Twojej bazy i wypełnieniem jej danymi za pomocą INSERT, bez grzebania się w bebechach formatów OpenDocument i HSQL. Po dostosowaniu szczegółów dialektu SQL do wymagań postgresa, łykniesz go np. dołączonym do postgresa psql-em albo pgadminem.
Poziom wysoki:
Drag & drop, Copy & paste... Chciałoby się. Ale tak nie umiem, obawiam się że się nie da.
po rozpakowaniu unzip-em pliku odb w pliku database/script znajdziesz SQL-owe polecenia tworzące Twoje tabele i więzy oraz perspektywy. Dane są w pliku database/data, niestety binarnym. Możesz tabelę po tabeli przenosić przez Calca albo przez pliki CSV/TSV.
Poziom średni:
w oknie poleceń SQL wykonaj polecenie
Kod: Zaznacz cały
SCRIPT 'plik.sql'
Poziom wysoki:
Drag & drop, Copy & paste... Chciałoby się. Ale tak nie umiem, obawiam się że się nie da.
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Migracja z HSQL na PostgreSQL
Udało się 2 metodą. Dzięki serdecznie
Pojawił się jednak nowy problem, nie można dodawać/edytować rekordów w tabelach. Tabele można edytować lecz nie można dokonać żadnych zmian... Relacje w base też nie działają..
Przypuszczam, że problem leży w kluczach i relacjach ale kompletnie nic nie przychodzi mi do głowy...
Chociaż, to jest chyba problem z base lub sterownikiem do niego bo nawet jak zrobię jakąś tabele nową to też nie mogę nic dodać/edytować
UPDATE!!!
Tak to była wina sterownika. Po zastosowaniu tego tutka http://www.postgresonline.com/journal/a ... reSQL.html wszystko gra!!!
Pojawił się jednak nowy problem, nie można dodawać/edytować rekordów w tabelach. Tabele można edytować lecz nie można dokonać żadnych zmian... Relacje w base też nie działają..
Przypuszczam, że problem leży w kluczach i relacjach ale kompletnie nic nie przychodzi mi do głowy...
Chociaż, to jest chyba problem z base lub sterownikiem do niego bo nawet jak zrobię jakąś tabele nową to też nie mogę nic dodać/edytować
UPDATE!!!
Tak to była wina sterownika. Po zastosowaniu tego tutka http://www.postgresonline.com/journal/a ... reSQL.html wszystko gra!!!
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
Debian GNU/Linux 64 bit
Re: [SOLVED] Migracja z HSQL na PostgreSQL
Dziwna sprawa.
Kiedy odpalam formularz oparty o relację Klienci - Maszyna otrzymuję poniższy komunikat:
"Nie można załadować danych.
Stan SQL: 22023
Indeks kolumny jest poza zakresem: 1, liczba kolumn: 0.
Polecenie SQL prowadzące do tego błędu:
SELECT * FROM "public"."Maszyna" WHERE ( "NIP" = :link_from_NIP )"
O co biega?
Kiedy odpalam formularz oparty o relację Klienci - Maszyna otrzymuję poniższy komunikat:
"Nie można załadować danych.
Stan SQL: 22023
Indeks kolumny jest poza zakresem: 1, liczba kolumn: 0.
Polecenie SQL prowadzące do tego błędu:
SELECT * FROM "public"."Maszyna" WHERE ( "NIP" = :link_from_NIP )"
O co biega?
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
Debian GNU/Linux 64 bit
Re: [SOLVED] Migracja z HSQL na PostgreSQL
O sterownik. Używasz zapewne jdbc.panbaryla pisze:O co biega?
Serwer nie dostaje poprawnego zapytania SQL z podstawionymi parametrami. Poszukaj w logach.
Nie wiem czy wszystkie wersje sterownika jdbc do postgresa generują ten błąd, ale trzeba liczyć, że tak. Trochę to dziwne, bo te same sterowniki użyte z innych klientów (np. z DbVisualizera) podstawiają parametry poprawnie. Więc chyba coś nie iskrzy na styku Base--jdbc.
Pamiętam, że kiedyś się już na ten problem natknąłem. Wtedy rozwiązałem go pisząc makra z zapytaniami zamiast korzystać z narzędzia Kwerendy.
Ale kiedy zmienisz typ połączenia z jdbc na Postgresql (sterownik sdbc dostarczany z LibreOffice), to będzie OK. Tylko że jako parametry połączenia musisz wpisać "host=serwer dbname=baza" zamiast url-a 'postgresql://serwer/baza". No i w starszych wersjach Base (np. OOo 3.3) trzeba będzie dokonfigurować połączenie.
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: [SOLVED] Migracja z HSQL na PostgreSQL
Błąd zniknął ale nie da się wprowadzić danych nawet bezpośrednio do tabeli...
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
Debian GNU/Linux 64 bit
Re: [SOLVED] Migracja z HSQL na PostgreSQL
SOA: u mnie działa.
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: [SOLVED] Migracja z HSQL na PostgreSQL
Hmmmm... siedziałem przez Święta nad tym i nie znalazłem rozwiązania...
Korzystam z tego sterownika - http://www.openoffice.org/dba/drivers/p ... index.html pod LibreOffice 3.5.4.2.
Korzystasz z LL czu OO?
Korzystam z tego sterownika - http://www.openoffice.org/dba/drivers/p ... index.html pod LibreOffice 3.5.4.2.
Korzystasz z LL czu OO?
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
Debian GNU/Linux 64 bit
Re: [SOLVED] Migracja z HSQL na PostgreSQL
Sprawdzałem na LO 3.5 i 3.6. Mam instalacje OOo 3.3, ale nie doposażałem jej w sterownik sdbc dla Postgresa.
Co to znaczy, że się “nie da” wpisać danych do tabeli? jakieś komunikaty? nie umiem odtworzyć błędu, więc pozostaje zgadywanie. Zajrzyj też do logów Postgresa; może coś wyjaśnią?
Co to znaczy, że się “nie da” wpisać danych do tabeli? jakieś komunikaty? nie umiem odtworzyć błędu, więc pozostaje zgadywanie. Zajrzyj też do logów Postgresa; może coś wyjaśnią?
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: [SOLVED] Migracja z HSQL na PostgreSQL
"nie da" się czyli nie można dodać kolejnych rekordów ani edytować już istniejących, wygląda tak jak by były "zablokowane"...Jan_J pisze:Sprawdzałem na LO 3.5 i 3.6. Mam instalacje OOo 3.3, ale nie doposażałem jej w sterownik sdbc dla Postgresa.
Co to znaczy, że się “nie da” wpisać danych do tabeli? jakieś komunikaty? nie umiem odtworzyć błędu, więc pozostaje zgadywanie. Zajrzyj też do logów Postgresa; może coś wyjaśnią?
...poniżej logi z Postgresa ale one raczej nic nie wyjasniają...
2013-01-03 11:49:07 CET LOG database system was shut down at 2013-01-03 09:40:55 CET
2013-01-03 11:49:07 CET LOG database system is ready to accept connections
2013-01-03 11:49:07 CET LOG autovacuum launcher started
2013-01-03 12:15:20 CET ERROR null value in column "NumerSeryjny" violates not-null constraint
2013-01-03 12:15:20 CET DETAIL Failing row contains (21, null, null, null, null).
2013-01-03 12:15:20 CET STATEMENT INSERT INTO "public"."Awaria" ( "id_awaria") VALUES ( $1)
2013-01-03 12:19:04 CET ERROR null value in column "NumerSeryjny" violates not-null constraint
2013-01-03 12:19:04 CET DETAIL Failing row contains (21, test, null, null, null).
2013-01-03 12:19:04 CET STATEMENT INSERT INTO public."Awaria"(id_awaria, typ_awarii) VALUES ('21'::integer, 'test'::text)
2013-01-03 12:21:32 CET ERROR syntax error at or near ":" at character 72
2013-01-03 12:21:32 CET STATEMENT SELECT * FROM "public"."maszyna" WHERE ( 0 = 1 ) AND ( ( "klient_id" = :link_from_id ) )
2013-01-03 12:21:37 CET ERROR syntax error at or near ":" at character 72
2013-01-03 12:21:37 CET STATEMENT SELECT * FROM "public"."maszyna" WHERE ( 0 = 1 ) AND ( ( "klient_id" = :link_from_id ) )
2013-01-03 12:21:38 CET ERROR syntax error at or near ":" at character 72
2013-01-03 12:21:38 CET STATEMENT SELECT * FROM "public"."maszyna" WHERE ( 0 = 1 ) AND ( ( "klient_id" = :link_from_id ) )
2013-01-03 12:21:39 CET ERROR syntax error at or near ":" at character 72
2013-01-03 12:21:39 CET STATEMENT SELECT * FROM "public"."maszyna" WHERE ( 0 = 1 ) AND ( ( "klient_id" = :link_from_id ) )
2013-01-03 12:21:39 CET ERROR syntax error at or near ":" at character 72
2013-01-03 12:21:39 CET STATEMENT SELECT * FROM "public"."maszyna" WHERE ( 0 = 1 ) AND ( ( "klient_id" = :link_from_id ) )
2013-01-03 12:22:17 CET ERROR syntax error at or near ":" at character 72
2013-01-03 12:22:17 CET STATEMENT SELECT * FROM "public"."maszyna" WHERE ( 0 = 1 ) AND ( ( "klient_id" = :link_from_id ) )
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
Debian GNU/Linux 64 bit
Re: [SOLVED] Migracja z HSQL na PostgreSQL
Właśnie że one wyjaśnią najwięcej...panbaryla pisze: "nie da" się czyli nie można dodać kolejnych rekordów ani edytować już istniejących, wygląda tak jak by były "zablokowane"...
...poniżej logi z Postgresa ale one raczej nic nie wyjasniają...
Jeden problem to pominięcie pola kluczowego w INSERT (trzeba zdefiniować typ serial, żeby się samo aktualizowało). Drugi, to coś ze składnią. Dodałbyś jeszcze tekst zapytania w postaci, w jakiej zapisany jest w definicji kwerendy w pliku odb, “wyprany” z wszelkich poufności. Trzeba dostroić go tak by współpracował z Postgresem. To jest możliwe.
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: [SOLVED] Migracja z HSQL na PostgreSQL
Tak wygląda (wyczyszczony z danych) plik który zasysam przez pgAdmina
Kod: Zaznacz cały
DROP TABLE SERWIS;
DROP TABLE AWARIA;
DROP TABLE MASZYNA;
DROP TABLE KLIENT;
DROP SEQUENCE SEQ_KLIENT;
DROP SEQUENCE SEQ_MASZYNA;
DROP SEQUENCE SEQ_SERWIS;
DROP SEQUENCE SEQ_AWARIA;
CREATE SEQUENCE SEQ_KLIENT START 1 INCREMENT 1;
CREATE SEQUENCE SEQ_MASZYNA START 1 INCREMENT 1;
CREATE SEQUENCE SEQ_SERWIS START 1 INCREMENT 1;
CREATE SEQUENCE SEQ_AWARIA START 1 INCREMENT 1;
CREATE TABLE KLIENT(
ID integer not null default nextval('SEQ_KLIENT') primary key,
NIP char(10) not null,
NAZWA character varying(500),
TYP_ADRESU character varying(50),
ULICA character varying(50),
KOD_POCZTOWY character varying(50),
MIASTO character varying(50),
NUMER character varying(50),
OPIS character varying(10485760)
);
CREATE TABLE MASZYNA(
ID integer not null default nextval('SEQ_MASZYNA') primary key,
KLIENT_ID integer references KLIENT(ID),
NUMER_SERYJNY char(10) not null,
NIP char(10) not null,
TYP_ADRES_MASZYNA character varying(50),
ULICA character varying(50),
KOD_POCZTOWY character varying(50),
MIASTO character varying(50),
NUMER character varying(50),
OPIS character varying(10485760),
TYP_MASZYNY character varying(50),
DATA_MONTAZU DATE,
DATA_DEMONTAZU DATE
);
CREATE TABLE SERWIS(
ID integer not null default nextval('SEQ_SERWIS') primary key,
MASZYNA_ID integer references MASZYNA(ID),
DATA_SERWISU DATE,
NUMER_SERYJNY CHAR(6) NOT NULL,
DATA_PLANOWANEGO DATE,
CZYNNOSCI_SERWISOWE character varying(150),
STATUS_MASZYNY character varying(50),
DATA_PRZEGLADU DATE,
DATA_PLANOWANEGO_PRZEGLAD DATE,
CZYNNOSCI_PRZEGLAD character varying(50)
);
CREATE TABLE AWARIA(
ID integer not null default nextval('SEQ_AWARIA') primary key,
MASZYNA_ID integer references MASZYNA(ID),
TYP_AWARII VARCHAR(50),
DATA_ZGLOSZENIA DATE,
NUMER_SERYJNY CHAR(6) NOT NULL
);
INSERT INTO KLIENT(NIP,NAZWA,TYP_ADRESU,ULICA,KOD_POCZTOWY,MIASTO,NUMER,OPIS) VALUES('xxxx','xxxxxxxxxxxxxx.','Ul.','Domaniewska','02-672','Warszawa','xx',NULL);
INSERT INTO MASZYNA(NUMER_SERYJNY,NIP,TYP_ADRES_MASZYNA,ULICA,KOD_POCZTOWY,MIASTO,NUMER,OPIS,TYP_MASZYNY,DATA_MONTAZU,DATA_DEMONTAZU) VALUES('xxxxxxx','xxxxxxxxx8','Ul.','Wspólna','00-519','Warszawa','25','IIIp','xxxxxxxxx','2011-05-05',NULL);
INSERT INTO AWARIA(TYP_AWARII,DATA_ZGLOSZENIA,NUMER_SERYJNY) VALUES('xxxxxxxxxxxxxxxe','2012-05-30','007760');
update Maszyna m2 set klient_id = (
select k.id from maszyna m, klient k
where m.nip = k.nip and m.id = m2.id
);
update SERWIS s2 set maszyna_id = (
select m.id from SERWIS s, maszyna m
where s.numer_seryjny = m.numer_seryjny and s.id = s2.id
);
update Awaria a2 set maszyna_id = (
select m.id from awaria a, maszyna m
where a.numer_seryjny = m.numer_seryjny and a.id = a2.id
);
ALTER TABLE Maszyna DROP COLUMN nip;
ALTER TABLE Serwis DROP COLUMN numer_seryjny;
ALTER TABLE Awaria DROP COLUMN numer_seryjny;
ALTER TABLE Maszyna ALTER COLUMN klient_id SET NOT NULL;
ALTER TABLE Serwis ALTER COLUMN maszyna_id SET NOT NULL;
ALTER TABLE Awaria ALTER COLUMN maszyna_id SET NOT NULL;
Ostatnio zmieniony ndz sty 06, 2013 5:33 pm przez Jan_J, łącznie zmieniany 1 raz.
Powód: [quote] -> [code], aby bezboleśnie kopiować
Powód: [quote] -> [code], aby bezboleśnie kopiować
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
Debian GNU/Linux 64 bit
Re: [SOLVED] Migracja z HSQL na PostgreSQL
W Twoim skrypcie z ostatniego postu modyfikacja tabel się nie udaje.
Jest tak dlatego, że podałeś niespójne wartości w przykładowych INSERT-ach.
Jest tak dlatego, że podałeś niespójne wartości w przykładowych INSERT-ach.
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: [SOLVED] Migracja z HSQL na PostgreSQL
Problem leży po stronie dogrywanego sterownika lub starszej wersji LO. Odpaliłem wszystko na innym kompie z najnowszym LO (bo na Ubu 10.04 nie mogę nie wiedzieć czemu zainstalować najnowszej wersji) i wszystko chodzi jak burza...
Dziękuję za pomoc!
Dziękuję za pomoc!
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
Debian GNU/Linux 64 bit
Re: [SOLVED] Migracja z HSQL na PostgreSQL
no to s.o.l.v.e.d. Trudno o lepszą bazę w świecie foss.
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: [SOLVED] Migracja z HSQL na PostgreSQL
Co racja to racjaJan_J pisze:Trudno o lepszą bazę w świecie foss.
Libre Office, wersja: 7.3.5.2
Debian GNU/Linux 64 bit
Debian GNU/Linux 64 bit