Both sides previous revision Previous revision Next revision | Previous revision |
kb:pg:migracija_jet_na_pg_main [2018/02/22 11:12] – [Migracija podataka, linkova i izveštaja na PostgreSQL] milano | kb:pg:migracija_jet_na_pg_main [2019/12/11 09:33] (current) – [Procedure migracije podataka] nessa |
---|
===== Neophodne aplikacije i alati ===== | ===== Neophodne aplikacije i alati ===== |
| |
- PostgreSQL server (PGS) [[http://www.enterprisedb.com/products-services-training/pgdownload#windows|download za Windows]] | - PostgreSQL server (PGS) [[http://www.enterprisedb.com/products-services-training/pgdownload#windows|sa sajta proizvođača ]]ili[[https://www.openscg.com/bigsql/postgresql/installers.jsp/| sa sajta BigSQL]] |
- [[https://wiki.postgresql.org/wiki/YUM_Installation|YUM instalacija PostgreSQL servera]] | - [[https://wiki.postgresql.org/wiki/YUM_Installation|YUM instalacija PostgreSQL servera]] |
- [[:kb:pg:instalacija_pgagent_linux_centos7|Instalacija pgAgenta na Centos 7]] | - [[:kb:pg:instalacija_pgagent_linux_centos7|]] |
| - Instalacija PostgreSQL servera 9.6.12 sa Melany sajta: [[https://rd.melany.rs/install/support/pg/postgresql-windows-x32.exe|32bit]] [[https://rd.melany.rs/install/support/pg/postgresql-windows-x64.exe|64bit]] |
- PostgreSQL ODBC driver [[http://www.postgresql.org/ftp/odbc/versions/msi/|download]] | - PostgreSQL ODBC driver [[http://www.postgresql.org/ftp/odbc/versions/msi/|download]] |
- Query Analyzer (QA) [[ftp://rd.melany.rs/temp/labs/alati/QueryFind.exe|download]] | - Query Analyzer (QA) [[ftp://rd.melany.rs/temp/labs/alati/QueryFind.exe|download]] |
- Formula Checker (FC) [[http://rd.melany.rs/install/support/alati/Formula Checker.exe|download]] | - Formula Checker (FC) [[http://rd.melany.rs/install/support/alati/Formula Checker.exe|download]] |
| |
| |
===== Procedure migracije podataka ===== | ===== Procedure migracije podataka ===== |
| |
Koraci za migraciju su predstavljeni poretkom kojim bi ih trebalo sprovoditi, ali to nije obavezno i zavisi od situacije na terenu. | ==== Demo programi ==== |
| |
- [[kb:pg:priprema_za_migraciju|Priprema za migraciju]] | Ukoliko je potrebno isprobati B4 bez gaženja B3, mogu se iskoristiti sledeći paketi: |
- [[kb:pg:priprema_za_migraciju#"Pravljenje "linkova" između PGS shema/baza (imitacija linkova u JET bazama)"|prevezivanje linkova ka prethodnim godinama (arhivama)]] | |
- [[kb:pg:migracija_upotrebom_queryfind|Migracija podataka upotrebom QueryFind programa]] | |
- [[kb:pg:migracija_crystal_reports_obrazaca|Migracija Crystal Reports izveštaja i obrazaca]] | |
- [[kb:pg:sabirnica_transporter_povezivanje_na_postgres|Usmeravanje Balans Sabirnice i Transportera na Postgres bazu]] | |
| |
| * Balans 4 ([[https://rd.melany.rs/install/support/pg/Balans4.zip|download]]) |
| * Alati 4 ([[https://rd.melany.rs/install/support/pg/Balans4.zip|download]]) |
| |
---- | Paketi su zapravo zip arhive koje treba negde raspakovati, i programe pokretati direktno sa lokacije raspakivanja, bez instalacije. |
Srodne stranice | |
* [[kb:pg:balans_connection_stringovi_na_postgres|Balans i "connection stringovi" na Postgres]] | |
===== Priprema za migraciju ===== | |
| |
==== Priprema baze ==== | {{:bal:bal:uzvik_32.png?nolink&32x32 }}Ako se demo B4 postavlja na server paralelno sa produkcijskim B3, nije moguće pokretanje instalacionog program za B4. \\ Zbog toga je skriptu za formiranje **blfpub** baze podataka, koja se standardno izvršavaju pri instalaciji, potrebno [[:kb:pg:priprema_za_migraciju_rucni_blfpub|uraditi ručno]]. |
| |
{{:bal:uzvik_32.png?nolink&32x32 }}Pre migracije obavezno proveriti strukturu JET baze upoređivanjem sa nultom bazom. | Ukoliko se ne kreira **blfpub **baza, Balans 4 i Alati 4 neće raditi ! |
| |
==== Priprema drajvera ==== | |
| |
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.\\ | ==== Koraci (stari način) ==== |
\\ | |
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 {{:kb:uputstva:postgres_odbc_driver.png?linkonly|ovim primerom.}} \\ | |
\\ | |
{{:bal:znanje_32.png?nolink&32x32 }}Detalji o svim parametrima Postgres ODBC drajvera nalaze se na ovoj adresi: [[http://psqlodbc.projects.pgfoundry.org/docs/config.html|http://psqlodbc.projects.pgfoundry.org/docs/config.html]] | |
| |
**Opcije drajvera koje utiču na Crystal Reports izveštaje** | Koraci za migraciju su predstavljeni poretkom kojim bi ih trebalo sprovoditi, ali to nije obavezno i zavisi od situacije na terenu. |
| |
|**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| | - [[:kb:pg:priprema_za_migraciju_2|Priprema za migraciju]] |
|**True is -1** | | | - [[:kb:pg:priprema_za_migraciju#ckgedit_quot_pravljenje_ckgedit_quot_linkova_ckgedit_quot_izmedu_pgs_shema_baza_imitacija_linkova_u_jet_bazama_ckgedit_quot|prevezivanje linkova ka prethodnim godinama (arhivama)]] |
| - [[:kb:pg:migracija_upotrebom_queryfind|Migracija podataka upotrebom QueryFind programa]] |
| - [[:kb:pg:migracija_crystal_reports_obrazaca|Migracija Crystal Reports izveštaja i obrazaca]] |
| - [[:kb:pg:sabirnica_transporter_povezivanje_na_postgres|Usmeravanje Balans Sabirnice i Transportera na Postgres bazu]] |
| - [[:kb:pg:migracija_iz_93_u_96|Migracija podataka iz PostgreSQL 9.3 u PostgreSQL 9.6 bazu]] |
| |
{{:bal:ideja_32.png?nolink&32x32 }}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. | ==== Koraci (novi način) ==== |
| |
Primer parametara veze | Osnov za novi način migracije čini izjednačavanje verzija B3 i B4 templejt baze i pretakanje podataka iz B3 umesto prevođenja upita. |
| |
<code> | - [[:kb:pg:priprema_za_migraciju_2|Priprema baza podataka za migraciju]] |
Server=nekiServer;Port=5432;Uid=nessa;Pwd=exMachina | - [[:kb:pg:migracija_upotrebom_queryfind_2|Migracija upotrebom QueryFind programa]] |
</code> | |
| |
Č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. | ---- |
| |
\\ | |
| |
| |
==== Povezivanje Sabirnice i Transportera ==== | |
| |
Da bi Sabirnica/Transporter znali da treba da se vežu na Postgres bazu posle broja firme u parametru komandne linije za njihovo pokretanje treba dodati **@//DSN_naziv//** . | |
Umesto naziva DSN-a može se zadati i ime txt fajla iz ..BalansData foldera u kome su šifrovani parametri pristupa Postgres serveru. | |
| |
Primer upotrebe Posgres ODBC DSN za pokretanje Transportera nad firmom 3 upotrebom PostgreSQL35W ODBC DSN-a | |
| |
<code> | |
BLSyncSrv.exe 3@PostgreSQL35W | |
</code> | |
| |
Primer upotrebe fajla PgODBCalboka.txt za povezivanje nad firmom 3 | |
| |
<code> | |
BLSyncSrv.exe 3@PgODBCalboka.txt | |
</code> | |
| |
==== Napomena kod zadavanja pristupnih lozinki bazi podataka ==== | |
| |
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 [[http://www.postgresql-archive.org/Problem-with-special-characters-in-password-when-using-SQLDriverConnect-td5755239.html|ovom linku]]. | |
| |
\\ | |
| |
| |
===== Pravljenje "linkova" između PGS shema/baza (imitacija linkova u JET bazama) ===== | |
| |
U PostgreSQL-u ne postoje linkovi u smislu JET baza (pokazivači na tabele u drugim bazama). Ako su tabele u shemama iste baze (firme) npr. prethodne godine onda im se pristupa navodjenjem imena sheme ispred imena baze npr. SELECT <nowiki>*</nowiki> FROM "2015".Racuni tako da se umesto JET linka Racuni2015 može napraviti view Racuni2015. Ako je JET link na bazu druge firme (npr. Albo –> Boka) onda se koristi FDW (foreign data wrapper) PGS ekstenzija. Skoro ceo posao je automatizovan iz QA i potrebno je uraditi sledeće: 1. Uvesti sve baze (tekuće i prethodne godine) u PGS 2. Pokrenuti QA i spojiti se na JET bazu tekuće godine željene firme 3. Spojiti se i na PGS bazu tekuće godine željene firme 4. Otvoriti formu za linkovanje u QA 5. Kliknuti na tab "Link manager" da bi se učitali podaci o linkovima 6. Kliknuti na tab "JET > PostgreSQL" i na njemu dugme sa oznakom (i) da bi se proverilo koje "linkove" je moguće napraviti, a koje ne (zelene i crvene sličice u poslednjoj koloni grida) 7. Kliknuti na dugme sa PGS logom da bi se napravio skript za linkovanje koji treba odraditi iz pgAdmin aplikacije nad tekućom godinom (public shema) željene firme | |
| |
{{:kb:pg:pglinkovi.png?direct&700x531}} | |
| |
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 [[http://pgxn.org/dist/tds_fdw/|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 \\ [[https://www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/|www.mssqltips.com/sqlservertip/3662/sql-server-and-postgresql-linked-server-configuration--part-2/]] | |
| |
<font inherit/inherit;;#FF0000;;inherit>**Posle prebačenih tabela, linkova i upita u PGS baze treba odraditi skriptove iz DBupdate4 foldera (PG_2xxxx.sql fajlovi)**</font> | |
| |
==== ==== | |
| |
===== Migracija izveštaja na Postgres ===== | |
| |
Izveštaji koji se sami kače na bazu moraju se prebaciti na Command objekat koji se takođe sam kači na bazu, ali iz nekog razloga može da vidi parametrizovane upite u PGS serveru. \\ | |
TTX i COM izveštaji se ne moraju prepravljati jer njima Balans prosleđuje podatke. Postupak za prepravku takvih izveštaja je sledeći: | |
| |
Na računaru na kojem je instaliran Balans i ima pristup bazama podataka u Data 20 folderu treba pokrenuti Formula Checker, odabrati opciju 'obradi i podfoldere' i kliknuti na sličicu PGS slona. \\ | |
Direktorijum JET baze koja sadrži upite na koje se izveštaji oslanjaju zadaje se klikom na dugme foldera iznad sličice PGS slona. \\ {{:kb:slike:formulachecker.png?818x203}} \\ | |
Na kraju procesa u folderu Data 20 ili u folderu sa izveštajima će biti napravljen fajl **Izvestaj_o_izvestajima.txt ** \\ | |
Sadržaj tog fajla će biti spisak izveštaja sa pripadajućim SQL komandama za dobijanje podataka iz PGS baze. Npr. | |
| |
E:\Razvoj\Assets\Reports_4\Artikli i Usluge\Kartica artikla (prosirena).rpt \\ | |
Parametri: 5 \\ | |
{?inElID} {?inSklID} {?inDatStart} {?inDatEnd} {?InFal} \\ | |
Tabele: 1 \\ | |
tabela rptProveraArtikla: ODBC —> SELECT <nowiki>*</nowiki> FROM {?dbSchemaName}rptProveraArtiklaMP({?inElID},{?inSklID},{?inDatStart},{?inDatEnd},{?InFal}::boolean) | |
| |
Otvoriti prvi izveštaj, desni klik na Database Fields pa opcija Set Datasource Location… \\ {{:kb:slike:setdatasourcelocation.png?nolink&297x210}} \\ | |
U novom prozoru u gornjem polju 'Current Data Source' kliknuti na ime tabele/upita koji se koristi, a u donjem polju 'Replace with' kliknuti na 'Create New Connection' \\ | |
i unutar toga ODBC (RDO). Pojaviće se forma za odabir ODBC konekcije pa treba odabrati prethodno napravljeni PGS ODBC konektor npr. PostgreSQL35W. \\ {{:kb:slike:setdatasourcelocation2.png?774x587}} \\ | |
Nakon toga treba kliknuti na Add Command u ODBC (RDO) odeljku pa na dugme 'Update'. Pojaviće se forma za unos SQL komande i parametara. \\ | |
U polje za SQL treba copy–paste komandu iz fajla Izvestaj_o_izvestajima.txt pa za svaki parametar u {?…} zagradama treba dodati odgovarajući bez tih zagrada \\ | |
klikom na dugme Create… \\ {{:kb:slike:setdatasourcelocation3.png?894x731}} \\ | |
Value Type za parametre koji su dodatno uokvireni u apostrofe i za dbSchemaName je String, a za ostale je najbolje pogledati kroz QA za svaki slučaj. \\ | |
Uglavnom su parametri čiji naziv počinje sa InDat tipa DateTime, parametri koji se kastuju sa CBool() ili ::boolean su tipa Boolean, a ostali su tipa Number. \\ | |
Na kraju, kada se dodaju svi parametri u spisak, posle klika na OK pojaviće se forma za unos parametara (iz nepoznatog razloga pojavi se 2 puta) pa \\ | |
ako sve prođe kako treba u polju 'Current Data Source' će za Table Name pisati Command umesto imena tabele/upita. \\ {{:kb:slike:setdatasourcelocation4.png?335x304}} | |
| |
Ako izveštaj ima **podizveštaje ** koji koriste svoje upite onda u polju 'Current Data Source' treba za svaki od njih ponoviti postupak zamene upita SQL komandom iz fajla Izvestaj_o_izvestajima.txt | |
| |
Ponoviti postupak za sve ostale izveštaje, ali ne zatvarati prozor Crystal Reports-a tako da se ne mora svaki put praviti nova ODBC (RDO) konekcija. | |
| |
===== Izmena connection stringa za pristup PGS bazi iz Balansa ===== | |
| |
Postoji nekoliko načina za pristup bazi kroz ADO konekciju setovanjem svojstva **ConnectionString**: | ===== Srodne stranice ===== |
- **Korišćenjem DSN-a**: DSN=//naziv_DSNa// ili Provider=MSDASQL.1;Extended Properties="DSN=//naziv_DSNa//;DATABASE=//dbname//;SERVER=//servername_orIP//;PORT=//portnum//;UID=//username//;PWD=//password//" što je korisno za promenu baze bez prepravke DSN-a | |
- **Korišćenjem Postgres ODBC drivera**: "Driver={PostgreSQL Unicode};Server=//servername_orIP//;Port=//portnum//;Database=//dbname//;Uid=//username//;Pwd=//password//;ByteaAsLongVarBinary=1;BoolsAsChar=0;" (u početku je radilo OK, ali je odjednom vreme izvršenja skočilo na 40-50 sec. [[http://www.pgoledb.com|http://www.pgoledb.com]]) | |
- **Korišćenjem Native OLEDB PGS drivera** koji se plaća: "Provider=PostgreSQL OLE DB Provider;Data Source=//servername_orIP//;location=//dbname//;User ID=//username//;password=//password//;" (poslednja besplatna verzija je 1.0.0.20 iz 2005 god. [[http://pgfoundry.org/projects/oledb|http://pgfoundry.org/projects/oledb]]) | |
- **Korišćenjem 3rd party drivera** npr. PM PostgreSQL OLEDB by Pavel Krejcir: "Provider=PMDAPGS;Server=//servername_orIP//;Database=//dbname//;User=//username//;Password=//password//;Port=//portnum// ([[http://sourceforge.net/projects/pmpostgresqlole/files|http://sourceforge.net/projects/pmpostgresqlole/files]] okida grešku pri kačenju) | |
| |
\\ | * [[:kb:pg:balans_connection_stringovi_na_postgres|Balans i "connection stringovi" na Postgres]] |
| * [[:kb:pg:balans_modif_functions_data_sync|Napomene pri izradi Postgres funkcija koje menjaju podatke]] |
| |
| |