kb:pg:migracija_jet_na_pg_main

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:06] 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. \\ 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]]+Paketi su zapravo zip arhive koje treba negde raspakovati, i programe pokretati direktno sa lokacije raspakivanja, bez instalacije.
  
-**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 <font inherit/inherit;;#FF0000;;inherit>šifrovanom obliku</font> navedu osnovni parametri pristupa PGS serveru npr. Server=nekiServer;Port=5432;Uid=nessa;Pwd=exMachina Čitanje fajla PgODBC.txt odrađuje BLRBasic i dodaje ostala svojstva (UseDeclareFetch, BoolsAsChar, TrueIsMinus1…) pre konekcije na PGS bazu. Ostali moduli kojima treba direktna konekcija na PGS bazu npr. BLRReports mogu dobiti sadržaj fajla PgODBC.txt od objekta klase BLRBasic.SyBal2 i po potrebi zadati ostala svojstva konekcije. 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]]. 
  
-===== Pravljenje "linkova" između PGS shema/baza (imitacija linkova u JET bazama=====+==== Koraci (stari način) ====
  
-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) 7Kliknuti 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+Koraci za migraciju su predstavljeni poretkom kojim bi ih trebalo sprovoditi, ali to nije obavezno zavisi od situacije na terenu.
  
-{{:kb:pg:pglinkovi.png?direct&700x531}}+  -  [[: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 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]]
  
-Ako se u neku od FDW tabela doda kolona ona se (verovatnoneć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.+==== Koraci (novi način====
  
-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. \\ +Osnov za novi način migracije čini izjednačavanje verzija B3 i B4 templejt baze i pretakanje podataka iz B3 umesto prevođenja upita.
-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>+  - [[:kb:pg:priprema_za_migraciju_2|Priprema baza podataka za migraciju]] 
 +  - [[:kb:pg:migracija_upotrebom_queryfind_2|Migracija upotrebom QueryFind programa]]
  
-====   ====+----
  
-===== 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. \\ +===== Srodne stranice =====
-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. \\ +  [[:kb:pg:balans_connection_stringovi_na_postgres|Balans "connection stringovi" na Postgres]] 
-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}} \\ +  * [[:kb:pg:balans_modif_functions_data_sync|Napomene pri izradi Postgres funkcija koje menjaju podatke]]
-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' \\ +
-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.txt
  • Last modified: 2019/12/11 09:33
  • by nessa