Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
kb:pg:migracija_jet_na_pg_main [2018/02/22 10:11] – [Priprema drajvera] milanokb:pg:migracija_jet_na_pg_main [2019/12/11 09:33] (current) – [Procedure migracije podataka] nessa
Line 1: Line 1:
 ====== Migracija podataka, linkova i izveštaja na PostgreSQL ====== ====== Migracija podataka, linkova i izveštaja na PostgreSQL ======
  
-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]]
  
-===== Priprema za migraciju =====+===== Procedure migracije podataka =====
  
-==== Priprema baze ====+==== Demo programi ====
  
-{{:bal:uzvik_32.png?nolink&32x32  }}Pre migracije obavezno proveriti strukturu JET baze upoređivanjem sa nultom bazom.+Ukoliko je potrebno isprobati B4 bez gaženja B3, mogu se iskoristiti sledeći paketi:
  
-==== Priprema drajvera ====+  * Balans 4 ([[https://rd.melany.rs/install/support/pg/Balans4.zip|download]]) 
 +  * Alati 4 ([[https://rd.melany.rs/install/support/pg/Balans4.zip|download]])
  
-Na kompjuteru sa koga će se prebacivati podaci iz JET baze podataka treba instalirati PostgreSQL ODBC driver.\\ +Paketi su zapravo zip arhive koje treba negde raspakovati, i programe pokretati direktno sa lokacije raspakivanja, bez instalacije.
-Kroz //Administrative tools –> ODBC data sources (32 bit)// treba napraviti //System DSN//čiji naziv može biti proizvoljan (npr. **PostgreSQL35W**) 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**+{{: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]].
  
-|**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 slogovajer DSN pokuša da uvučsve slogove iz rezultata pre nego što ga vrati Crystal-u| +Ukoliko se ne kreira **blfpub **bazaBalans 4 i Alati 4 nećraditi !
-|**True is -1** | |+
  
-{{:bal:ideja_32.png?nolink&32x32  }}Povezivanje 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+==== Koraci (stari način) ====
  
-<code> +Koraci za migraciju su predstavljeni poretkom kojim bi ih trebalo sprovoditi, ali to nije obavezno i zavisi od situacije na terenu.
-Server=nekiServer;Port=5432;Uid=nessa;Pwd=exMachina +
-</code>+
  
-Čitanje fajla **PgODBC.txt vrši** //BLRBasic.dll //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.+  -  [[:kb:pg:priprema_za_migraciju_2|Priprema za migraciju]] 
 +      - [[: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 obrazaca]] 
 +  - [[:kb:pg:sabirnica_transporter_povezivanje_na_postgres|Usmeravanje Balans Sabirnice Transportera na Postgres bazu]] 
 +  - [[:kb:pg:migracija_iz_93_u_96|Migracija podataka iz PostgreSQL 9.3 u PostgreSQL 9.6 bazu]]
  
-Posle broja firme u parametru komandne linije za sabirnicu/transporter treba dodati **@**//DSN_naziv// da bi se sabirnica/transporter kačili na PGS bazu. Inače će se kačiti na JET bazu. Umesto naziva DSN-a može se zadati i ime txt fajla iz Data 20 foldera u kome su šifrovani parametri pristupa PGS serveru npr. 55@PgODBCalboka.txt samo treba izbegavati specijalne karaktere **[]{}(),;?*=!@** u šifri za PGS server jer 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]].+==== Koraci (novi način) ====
  
-\\+Osnov za novi način migracije čini izjednačavanje verzija B3 i B4 templejt baze i pretakanje podataka iz B3 umesto prevođenja upita.
  
 +  - [[:kb:pg:priprema_za_migraciju_2|Priprema baza podataka za migraciju]]
 +  - [[:kb:pg:migracija_upotrebom_queryfind_2|Migracija upotrebom QueryFind programa]]
  
-===== 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}}+===== Srodne stranice =====
  
-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. +  * [[: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]]
-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**: +
-  - **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/migracija_jet_na_pg_main.1519294283.txt.gz
  • Last modified: 2018/02/22 10:11
  • by milano