Turquaz Muhasebe Forum

Turquaz Muhasebe Forum (http://forum.turquaz.com/tr/index.php)
-   Dönüşüm / Data Aktarma (http://forum.turquaz.com/tr/forumdisplay.php?f=5)
-   -   PostgreSQL'e veri aktarma (http://forum.turquaz.com/tr/showthread.php?t=1658)

secici 02-11-2006 05:36

PostgreSQL'e veri aktarma
 
Merhabalar;

Kendini sıfırdan başlatacak bir firmanın, Stok ve Cari kayıtları duracak ancak tüm hareketler sıfırdan başlayacak... Bunun için ne yaparız nasıl yaparız derken, sagolsun sevgili mkadir, efendy'nin:

http://forum.turquaz.com/tr/showthread.php?t=1466

konusu içerisinde yayinladigi excel tablosunun nasıl kullanıldığını bir flash dosyası hazırlayarak bana gondermis. Oradan veri tablolarının ekleniş sırasını öğrendim. Daha sonra Kayseri'den çok muhterem Oracle uzmanı Egemen (internet adlı) kardeşimin yönlendirmesiyle ihtiyacım olan tablolara PgAdmin III'de sağ fare tuşuyla tıklayarak Yedekleme yaparak, bunu yaparken PLAIN olarak, Sadece veri ve de Insert commands seçilerek bu tabloları dışarıya aktarma yani export etme yönteminin işe yaradığını farkettim diyebilirim.

Bu aşamadan sonra yeni oluşturduğumuz ve hazırladığımız taze veritabanına bu veriyi eklemek için Komut satırından PostgreSQL\8.0\bin konumuna giderek:
Kod:

D:\Program Files\PostgreSQL\8.0\bin>psql -U postgres -d turquaz -a -f D:\secici\Turquaz\backup\stokkartlari.backup
gibi bir komut vererek ve bunu doğru sırayla aktarılacak her tablo verisi için tekrar ederek uygulama aşamasına geçiyoruz. Bu komutta -U postgres parametresini verdiğimizde, komutun postgres yetkili kullanıcısı tarafından gerçekleştirilmesini söylemiş oluyoruz. Eğer sizin yetkili kullanıcı adınız farklı ise uygun olacak şekilde bir değişikliğe gitmelisiniz. Bu komutu verdikten sonra bizden yetkili kullanıcının şifresini isteyecek ve biz de vereceğiz. Arkasından ilgili tablo veritabanına aktarılacaktır.

Ben sırasıyla TURQ_INVENTORY_CARDS, TURQ_INVENTORY_CARD_UNITS, TURQ_INVENTORY_PRICES tablolarını aktardım. Engine ve Transaction tablolarını aktarmadım. Çünkü onlarda sadece Stok kartlarının açılması ile ilgili bilgiler tutulmuyor. Diğer operasyonlarımızdan dolayı da bu tablolara veri akışı oluyor dolayısıyla bu tabloları aktarmamız sağlıklı olmayacak.

Ben bu tabloları aktarmadığım için görünürde ve ilk etapta bir sorun yaşamadım. Bakalım kullanırken göreceğiz.

secici 02-11-2006 05:42

TURQ_ENGINE_SEQUENCES tablosu meselesi
 
Evet,

TURQ_INVENTORY_TRANSACTIONS tablosunu akarmadığımdan dolayı bir sorun yaşamadım ve aktarmadığımdan dolayı büyük bir sıkıntım yok. Sadece Açılış Hareketlerim yok. Onların yerine her stok kartı için bir ilk stok giriş hareketi oluşturacağım aynı işi görecektir.

Fakat bu engine meselesi çok kafamı kurcalıyor. TURQ_ENGINE_SEQUENCES tablosunu aktarmadım ve bir sorun var gibi de gozukmuyor...

Eee peki ne işe yarıyor ki bu veriler o zaman...

Endişe etmedengönül rahatlığıyla devam edebilmem için bu sorunun cevabını netleştirmem şart.

Bilenlerin ilgisine çok teşekkürler.

secici 02-11-2006 05:51

Olmadı ...

Eğer engine değerlerini aktarmazsak fatura keserken ya da Stok giriş vb. yaparken stok kartlarını ilişkilendiremiyor. Arıyor buluyor kutuya da getirebiliyor belki ancak yeşile boyayamıyor ve Kaydetmek istediğinde Stok kartı yokmuş gibi davranıyor...

Bu konuda ne yapabiliriz.

Ay başından fazla uzaklaşmadan bu işi çözmem lazım. Yoksa çok fazla kayıt birikecek girmemiz gereken. Kullanıcı firmayı hataya zorlamamak için elimizi çabuk tutmamız gerek.

Lütfen, ilginize çok ihtiyacım var.

secici 02-11-2006 15:18

Evet,

Bu işin çözümü bu şekilde, yani tablo import-export etmek yöntemi ile zor gibi...

efendy'nin hazırladığı excel tablosundaki mantığı çözdüğüm için onu PostgreSQL'e uyarlayıp (en azından her satır sonunda ; karakteri eklemek zorundayız.) o yöntem üzerinden kayıt aktarımı yapacağımı sanıyorum. Bu işi şöyle hayırlısıyla halledebilirsem Belgelendirme'ye bu konuyu izah edecek birşeyler de hazırlamayı düşünüyorum.

Her bir sayfadaki en sağ sütunda üretilen nihai SQL cümleciklerini kopyalayarak bir metin dosyasına yapıştırın. Yani önce 1. sayfadaki cümlecikler, hemen bitiminde bir satır sonra ikinci sayfadaki... diye gidiyor. Sayfa sırasına riayet edin. Bu metin dosyasını kaydedip, ilk mesajda anlatılan yöntemi kullanarak veritabanına aktarabilirsiniz.

İhtiyaca göre satırları çektirip alta doğru uzatarak daha fazla satırı aktarma yapabilirsiniz. Fakat dikkat etmeniz gereken sondaki iki satırı birlikte işaretledikten sonra çektirerek uzatmaktır. Bu sayede rakamların birer birer artması sağlanır. Eğer bazı rakamlar her satırda birer birer artmazsa akarma işlemi düzgün bir şekilde gerçekleşmez.

Kolay gelsin.

secici 03-11-2006 16:54

Aktarma esnasında tampon olarak kullandığımız metin tipi dosyanın karakter kodlama sistemi (ANSI, Unicode, Unicode big endian, UTF-8 vb.) farklı olabilmesinden dolayı Türkçe karakterlerin bozuk olarak aktarılması sözkonusu olmakta... Bu sorun bir akşamda geceden sabaha kadar tüm vaktimi aldı...

Bunun çözümü için şimdilik bulabildiğim metod önce ilk mesajdaki gibi bir:

Alıntı:

Yedekleme yaparak, bunu yaparken PLAIN olarak, Sadece veri ve de Insert commands seçilerek bu tabloları dışarıya aktarma yani export etme yöntemi
yedek almak. Bu yedeğin içerisine oluştuğu metin dosyası sorunsuz aktarım yapabiliyor. Daha sonra bu metin belgesinin içerisini temizleyerek, oluşturduğumuz aktarım komutlarını bu metin belgesinin içerisine yazmaktır.

Windows'ta klasik yolla bir Yeni Metin Belgesi oluşturur ve bunu kullanırsanız, karakterler aktarımda bozuluyor....

Daha detayını keşfettiğimde sizleri bilgilendiririm.

Kolay gelsin.

secici 04-11-2006 08:44

Evet... Doğru metin dosyası tipini oluşturmak için o kadar da uğraşmanıza gerek yokmuş. Basit yöntem şu:

Windows'un Not defteri'ni kullanarak bir metin belgesi açın, içerisine bir iki şey yazdıktan sonra Farklı Kaydet'i seçin. Kodlama kısmından UTF-8'i seçin ve kaydedin.

Aktarma işlemimizi bu metin dosyasını kullanarak yaparsak Türkçe karakter sorunu yaşamayız. Yalnız dosyanın ilk satırına bir adet ; koyarak Enter'a basın. Yani ilk satırdaki komutun işlenmemesini sağlamamız gerekiyor. Çünkü psql.exe, bu tip bir metin dosyasını işlerken ilk satırda bozucu bir karakter algılıyor. Bu da ilk satırdaki komutumuzun doğru işlenmesine engel oluyor. Daha sonraki satırları notmal devam edebilirsiniz. Bir de en son satırda Kursor ün boş bir satırın başında olmasına dikkat edin, ya da garanti olsun diye fazladan bir Enter'a basın diye tavsiye edebilirim.

Sonuç olarak bütün bu bilgileri derleyerek Belgelendirme Projesine dahil etmek şart oldu ama bilemiyorum ne zaman vakit bulabilirim. Bu dönemde yardıma ihtiyacı olan buradan bizlerle temas kurabilir.

Kolay gelsin.

secici 06-11-2006 07:52

Cari verilerini aktarırken işler daha kolay.

Cari verilerinde Engine tablolarına herhangi bir veri gondermedigimiz için, doğrudan tablo verilerinin aktarılması işimizi görür. Stok tablolarının aktarımında engine tablosuna yazılması gereken veriler işi bozuyordu.

Sırasıyla:

TURQ_CURRENT_CARDS, TURQ_CURRENT_CARDS_PHONES, TURQ_CURRENT_CONTACTS tablolarını aktarmanız yeterli oluyor gibi göründü bana ve ilk denemelerim de bir sorun yaşamadım. İleride sorun olursa buradan bildiririm. Yalnız bu yöntemle TRANSACTIONS tablosunu aktaramıyoruz zira bu tablonun içerisinde sadece kart açma işlemleri yok, diğer başka bazı işlemler de var... Dolayısıyla ayıklamak imkansız.

Fakat şöyle de bir durum var Cari Açılış Hareketi mekanizmasının zaten Turquaz'da hatalı olduğu, birçok karta açılış hareketi girilemediği daha önce forumda duyurulmuştu. Bunun yerine yılbaşına alacak ya da borç fişi kaydediyoruz demiştik... Bu yol uygulanabilir.

Hayırlı gunler.

secici 06-11-2006 17:39

1 Eklenti(ler)
http://forum.turquaz.com/tr/showthread.php?t=1670

linkini incelerseniz hem HSQLDB hem PostgreSQL e aktarma için kullanılabilecek xls hesap tablosu formatında bir araç hazırlamıştım. Daha doğrusu efendy'nin hazırladığı tabloyu yeniden düzenlemiştim. Onunla alakalı bigi bulabilir ve indirip deneyebilirsiniz.

İnşallah işinize yarar. Kolay gelsin.

kurucu 04-08-2010 09:24

Merhabalar yaklaşık 1 haftalık uğraşlarım sonucu HSQLDB den POSTGRSQL'e bütün verilerimi aktarmayı başardım. Belki başkasınında ihtiyacı olur diye izlediğim yöntemi aşşağıya yazıyorum.
1. HSQLDB databasine bağlanacak bir tool yardımı ile bütün tabloların UTF8 dil kodu ile SQL exportlarını aldım.
2. pqAdmin III ile bir query sayfası actım ve oluşan sql tablolarını tabloların index ve foringkeylerinin sıralamasına dikkat ederek import ettim.
3. Sonuc olarak işlem sağlıklı bir şekilde calıştı ve programın cok kullanıcılı oldu.

Başıma gelen ters olayla.
1. Stok kartında eski databasede 25 olan boyutu 50 yapmışız o yüzden sorun yaşadım tablodan karakter sayısını değştirip çözümünü sağladım.
2. cari hareket tablolarında acıklama satırları anlamsız şekilde uzun geliyordu. O satırların düzeltilmesi işlemi biraz işimi uzattı ama sonuçta acıklama satırları olduğundan cok sorun cıkartacağını sanmıyorum.

Saygılarımla.

secici 16-10-2010 07:45

HSQLDB deki herşeyi mi PostgreSQL e aktarıyorsunuz? Yani sadece Stok kartları Cari kartlar gibi sabit kayıtları mı? Yoksa kartlar arasında oluşmuş hareketlerin kayıtları da bunlara dahil mi?

Yani kısacası işlemin sonucunda HSQLDB de çalışan Turquaz ile PostgreSQL de çalışan turquaz veriler açısından tıpkısının aynısı hale mi geliyor?

Eğer böyle bir sonuca ulaşabildiyseniz bunu resimli bir anlatımla ya da bir video-capture yazılımıyla gerçekleştirip kaydederek ve yaptığınız bu kaydı youtube olur vs. olur bir metodlara paylaşımını yapabilir misiniz?

Teşekkürler.


Forum saati Türkiye saatine göredir. GMT +3. Şuan saat: 13:43.
(Türkiye için GMT +2 seçilmelidir.)


SourceForge.net Logo