Treba izbegavati specijalne karaktere []{}(),;?*=!@ u šifri za Postgres bazu podataka. Ako se oni ipak koriste, šifra mora biti uokvirena u {…} zagrade.
Više o specijalnim karakterima na ovom linku.
Pre migracije obavezno proveriti strukturu JET baze upoređivanjem sa nultom bazom.
Na kompjuteru sa koga će se prebacivati podaci iz JET baze podataka ili na kome će raditi Balans 4 treba instalirati 32bitni PostgreSQL ODBC driver.
Opciono:
Kroz Administrative tools –> ODBC data sources (32 bit) treba napraviti System DSN koristeći unicode PostgreSQL ODBC driver, čiji naziv može biti proizvoljan (npr. PostgreSQL35W) i podesiti mu svojstva u skladu sa ovim primerom.
Detalji o svim parametrima Postgres ODBC drajvera nalaze se na ovoj adresi: http://psqlodbc.projects.pgfoundry.org/docs/config.html
Opcija “Unknowns as LongVarChar” služi da se JSON kolone pri čitanju ne seku na 255 karaktera.
Use Declare/Fetch | Kada se DSN koristi za Crystal treba uključiti na mašinama gde se okida greška “Out of memory while reading tuples” kada je rezultat sa mnogo slogova, jer DSN pokuša da uvuče sve slogove iz rezultata pre nego što ga vrati Crystal-u. Kada se DSN koristi za Balans treba isključiti jer se okida greška na WITH jfrom … iskazima. |
True is -1 | Treba isključiti uvek jer zbunjuje Crystal, a Balans radi u obe varijante. |
Povezivanje Balansa na Postgres bazu može se izvesti i bez registrovanja Postgres ODBC DSN tako što se u korenu foldera sa bazama podataka (..\Balans\Data\) napravi fajl PgODBC.txt u kome se u šifrovanom obliku navedu osnovni parametri pristupa serveru.
Primer parametara veze
Server=nekiServer;Port=5432;Uid=nessa;Pwd=exMachina
Čitanje fajla PgODBC.txt vrši BLRBasic.dll i dodaje ostala svojstva (UseDeclareFetch, BoolsAsChar, TrueIsMinus1 itd). pre ostvarivanja veze sa Postgres bazom. Ostali moduli kojima treba direktna konekcija na Postgres bazu (npr. BLRReports.dll) mogu dobiti sadržaj fajla PgODBC.txt od objekta klase BLRBasic.SyBal2 i po potrebi zadati ostala svojstva konekcije.
U PostgreSQL-u ne postoje linkovi u smislu JET baza (pokazivači na tabele u drugim bazama) - umesto toga se koriste Foreign Data Wraperi// , koji mogu spojiti baze sa istog ili različitih servera.
Za razliku od JET-a, gde su arhive bile zasebne baze podataka, u Postgresu su one samo scheme unutar iste baze. Kako su u istoj bazi, nema potrebe za linkovanjem već im se pristupa navodjenjem imena sheme ispred imena baze. Na primer:
SELECT * FROM "2015".Racuni
*) Ime šeme je uokvireno u znake navoda zato što počinje brojem, a ne slovom, kako je podrazumevano očekivano.
Tako imamo da se umesto JET linka Racuni2015 može napraviti pogled Racuni2015, iako bi najbolje bilo prepraviti takve upite da koriste šeme umesto pogleda.
Ako je JET link na bazu druge firme (npr. Firma 1 –> Firma 2) onda se koristi FDW (foreign data wrapper) PGS ekstenzija.
Skoro ceo posao je automatizovan iz QA i potrebno je uraditi sledeće:
Ako se u neku od FDW tabela doda kolona ona se (verovatno) neće videti u upitima jer je nema u FDW definiciji koju treba ponovo napraviti ako je moguće jer će možda komanda DROP FOREIGN TABLE xxx okinuti grešku da se koristi u nekim upitima. Nisam isprobao.
Napomena: JET linkovi na ne JET baze (npr. SQL Server) ne mogu se preneti u PGS jer postojeća rešenja kao što je tds_fdw ne podržavaju upis u SQL Server tabelu. Zato je jednostavnije napraviti link iz SQL Servera na PGS server pomoću PGS ODBC driver-a www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/
Na kompjuteru sa koga će se prebacivati podaci iz JET baze podataka ili na kome će raditi Balans 4 treba instalirati 32bitni PostgreSQL ODBC driver. Opciono: Kroz Administrative tools –> ODBC data sources (32 bit) treba napraviti System DSN, čiji naziv može biti proizvoljan (npr. PostgreSQL35W) i podesiti mu svojstva u skladu sa ovim primerom. Detalji o svim parametrima Postgres ODBC drajvera nalaze se na ovoj adresi: http://psqlodbc.projects.pgfoundry.org/docs/config.html
Use Declare/Fetch | Treba uključiti na mašinama gde se okida greška “Out of memory while reading tuples” kada je rezultat sa mnogo slogova, jer DSN pokuša da uvuče sve slogove iz rezultata pre nego što ga vrati Crystal-u |
True is -1 |
Povezivanje Balansa na Postgres bazu može se izvesti i bez registrovanja Postgres ODBC DSN tako što se u korenu foldera sa bazama podataka (..\Balans\Data\) napravi fajl PgODBC.txt u kome se u šifrovanom obliku navedu osnovni parametri pristupa serveru.
Primer parametara veze
Server=nekiServer;Port=5432;Uid=nessa;Pwd=exMachina
Čitanje fajla PgODBC.txt vrši BLRBasic.dll i dodaje ostala svojstva (UseDeclareFetch, BoolsAsChar, TrueIsMinus1 itd). pre ostvarivanja veze sa Postgres bazom. Ostali moduli kojima treba direktna konekcija na Postgres bazu (npr. BLRReports.dll) mogu dobiti sadržaj fajla PgODBC.txt od objekta klase BLRBasic.SyBal2 i po potrebi zadati ostala svojstva konekcije.
U PostgreSQL-u ne postoje linkovi u smislu JET baza (pokazivači na tabele u drugim bazama) - umesto toga se koriste Foreign Data Wraperi//, koji mogu spojiti baze sa istog ili različitih servera.
Za razliku od JET-a, gde su arhive bile zasebne baze podataka, u Postgresu su one samo scheme unutar iste baze. Kako su u istoj bazi, nema potrebe za linkovanjem već im se pristupa navodjenjem imena sheme ispred imena baze. Na primer:
SELECT * FROM "2015".Racuni
*) Ime šeme je uokvireno u znake navoda zato što počinje brojem, a ne slovom, kako je podrazumevano očekivano.
Tako imamo da se umesto JET linka Racuni2015 može napraviti pogled Racuni2015, iako bi najbolje bilo prepraviti takve upite da koriste šeme umesto pogleda.
Ako je JET link na bazu druge firme (npr. Firma 1 –> Firma 2) onda se koristi FDW (foreign data wrapper) PGS ekstenzija.
Skoro ceo posao je automatizovan iz QA i potrebno je uraditi sledeće:
Ako se u neku od FDW tabela doda kolona ona se (verovatno) neće videti u upitima jer je nema u FDW definiciji koju treba ponovo napraviti ako je moguće jer će možda komanda DROP FOREIGN TABLE xxx okinuti grešku da se koristi u nekim upitima. Nisam isprobao.
Napomena: JET linkovi na ne JET baze (npr. SQL Server) ne mogu se preneti u PGS jer postojeća rešenja kao što je tds_fdw ne podržavaju upis u SQL Server tabelu.
Zato je jednostavnije napraviti link iz SQL Servera na PGS server pomoću PGS ODBC driver-a
www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/
Posle prebačenih tabela, linkova i upita u PGS baze treba odraditi skriptove iz DBupdate4 foldera (PG_2xxxx.sql fajlovi)