يونكس / لينكس

Veri Değişimi İçin IBM iSeries Utilities

1. Giriş

Yaygın olarak AS / 400 sistemleri olarak bilinen IBM iSeries bilgisayarları, aşağıdaki özelliklere sahip dosyalara düzenlenen verileri depolamak ve erişmek için başarılı IBM DB2 veritabanını kullanır:

  • Genellikle veri alanlarına yapılandırılırlar. sabit uzunluk ve tip
  • Uygulama programları tarafından kullanılabilecek harici veri tanımları var.
  • Sayısal veriler, her bir basamağın bir sembilitede depolandığı paketlenmiş biçimde saklanabilir.
  • Veriler EBCDIC’de kodlanmış

Linux / Unix ve Windows gibi diğer sistemler, yalnızca bir bayt dizisi (normalde ASCII'de kodlanmış) olan ve bu nedenle akış dosyaları olarak bilinen dosyaları kullanır. Genellikle, alanları sabit bir uzunluğa sahip değildir ve noktalı virgül, sütun ya da boru gibi özel bir alan sınırlayıcı karakteri ile sınırlandırılır (alanla ayrılmış dosyalar genellikle Microsoft Excel gibi elektronik sayfalarda veya Microsoft gibi veritabanlarında depolanan verileri dışa aktararak üretilir. Erişim).

IBM iSeries (AS / 400) ile PC'ler ve Linux / Unix sistemleri arasında dosya aktarmak genellikle gerekli veya faydalıdır, ancak yukarıda açıklanan farklı dosya kuruluşları genellikle bu tür transferleri karmaşık ve acı verici hale getirir.

Bu makale çalışmayı kolaylaştırmak için bazı yaklaşımlar tanımlamıştır.

2. IBM yararlı komutları

IBM AS / 400, aynı sunucuda, Linux / Unix veya Windows tarafından kullanılanlar gibi farklı dosya organizasyonlarını ve yerel AS / 400 olanlarını kullanmanıza izin veren entegre bir dosya sistemi (IFS) kullanır. Yerel AS / 400 dosyaları, QSYS.LIB içindeki kitaplıklarda veya DB2 koleksiyonlarında depolanır. Diğer dosya sistemleri, QOpenSys (Unix'e benzer) veya QDLS (belgeleri ve dosyaları PC formatlarında depolamak için kullanılır) ortamlarında bulunur.

IFS, aynı sunucuda Linux / Unix tabanlı uygulamaların yerel AS ile birlikte kullanılmasına izin verir. / 400 uygulama

AS / 400 İşletim sistemi, aşağıda tanımlandığı gibi farklı dosya sistemleri arasındaki veri değişimlerini basitleştirmek için bazı yararlı komutlar sağlar:

  • IFS'den AS / 400 veri tabanına veri kopyalamak için CPYFRMIMPF
  • CPYTOIMPF, AS / 400 veritabanı sisteminden IFS'ye veri kopyalamak için
  • Akış dosyalarını AS / 400 veritabanı dosyalarına kopyalamak için CPYFRMSTMF
  • CPYTPSTMF, AS / 400 veritabanı dosyalarını dosya akışına kopyalamak için
  • AS / 400 veritabanı dosyalarını QDLS klasörlerinde depolanan PC belgelerine kopyalamak için CPYTOPCD
  • QDLS klasörlerindeki PC belgelerini AS / 400 veritabanı dosyalarına kopyalamak için CPYFRMPCD

CPYTOPCD ve CPYFRMPCD komutları, QDLS sistemine özeldir ve diğerlerinin birçok seçeneği kullanmasına izin veren ve daha esnek olmayan birçok seçeneğe sahip değildir. Benzer görünüyorlar, ancak aşağıdaki gibi önemli farklılıklar var:

CPYFRMSTMF metin dosyalarını (metin biçiminde olan akış dosyalarını) fiziksel dosyalara dönüştürür. Alan kavramı yoktur, bu nedenle yalnızca program tanımlı dosyalara (yani tanımlanmış alan bulunmayan dosyalar) veya kaynak dosyalarına program yazabilir.

CPYFRMIMPF metin dosyalarını da dönüştürür, ancak girdi dosyasındaki alanları yorumlamaya çalışır. ve bunları çıktı dosyasındaki uygun alanlara kopyalayın. Sınırlandırılmış alanları (örneğin, virgülle ayrılmış değer (CSV) dosyalarını, sekmeyle ayrılmış dosyaları, borudan ayrılmış dosyaları vb.) İçe aktarabilir veya sabit konumlu alanlardan giriş okuyabilirsiniz (kayıt düzenini " alan tanımı dosyası ")

İkinci komutun bir örneği şöyledir:

CPYFRMIMPF FROMSTMF ('/ Fldr1 / File1.CSV') TOFILE (Lib1 / FILE3) MBROPT (* DEĞİŞTİR) RCDDLM (* CRLF) DTA (* REPLACE) RCDDLM (* CRLF) DTA (* REPLACE) (* FIXED) FLDDFNFILE (Lib1 / FILE4)

Yukarıdaki örnekte, sabit bir veri formatı (yani sınırlandırılmamış) kullanılmıştır ve metin dosyası alanlarını aşağıdaki gibi tanımlamak için bir alan tanım dosyası (FILE4) kullanır:

– Bu, yorum Yap

– DBFieldname başlangıç ​​konumu bitiş sonu

alan1 1 12 13

alan2 14 24 0

alan3 25 55 56

alan4 78 89 90

alan5 100 109 0

alan6 110 119 120

alan7 121 221 0

* END

Metin dosyası verilerini alan adlarını içeren bir DB dosyasına içe aktarmak için yukarıdakilere ihtiyaç duyulacaktı: FIELD1, FIELD2, FIELD3, … ve FIELD7. * END gereklidir. Bence hiçbir alan boş olamazsa üçüncü sütunu bırakabileceğinizi düşünüyorum.

3. Bazı Kullanıcı Yardımcı Programları

Yukarıdaki komutlar kullanışlıdır ve normalde mükemmel bir şekilde yeterlidir, ancak özellikle kopyalanacak veri alanları aynı sırada olmadığında veya bir metin dosyasından yalnızca bazı verileri çıkarmak istediğinde karmaşık olabilir. [19659008] Unix, PC'ler ve AS / 400 sistemleri arasında bu tür kopyaların sık sık yapılması gerektiği ve bu nedenle bu etkinlikleri basitleştirmek için bazı yardımcı programlar geliştirdiğim birkaç göçmenlik uygulamasına dahil oldum.

Gereksinimler:

  • Alanları sınırlamak için kullanılan herhangi bir ayırıcı karakter desteği
  • Geçerli verileri alfasayısal, sayısal veya paketlenmiş sayısal olarak tanımlanan alanlara kopyalama imkanı
  • İki dosyada farklı dizilerde depolanan verileri kopyalama imkanı. Örneğin, metin dosyasının 1, 3, 4 ve 6 numaralı alanlarını, hedef veritabanı dosyasının 5, 2, 1 ve 4 numaralı alanlarına kopyalamak mümkün olmalıdır.
  • Yardımcı program, kullanıcının önceden girilmiş eşleştirmeyi kullanmasına izin vermek için dosya alanları eşlemelerini (yukarıda açıklananlar gibi) depolayabilmelidir.

Yardımcı programları birkaç komut ve programda aşağıdaki gibi organize ettim:

a) İki dosya arasındaki kopyayı kontrol etmek için UCPYFTP komutunu verin. Komut şu parametreleri girmeyi gerektirir:

AS400 DB Dosyası. . . . . . . . . TOFILE …….

AS400 Kütüphanesi. . . . . . . . . TOLIB * LIBL

AS400 Üyesi. . . . . . . . . . TOMBR * FIRST

FTP Dosyası. . . . . . . . . . . . FROMFILE …….

FTP Kütüphanesi. . . . . . . . . . FROMLIB …….

Alan Ayırıcı # T = TAB]. . . . AYIRICI '|'

Ondalık Nokta. . . . . . . . . DECPOINT '.'

Alan Eşlemelerini Görüntüleyin (E / H). . . VIEWMAP 'N'

Kayıt No. . . . . . . . UPTOREC 0

b) Mevcut dosya eşleştirmelerini görüntülemek ve sürdürmek için UFMA01L'yi programlayın

Ekran aşağıdaki gibi görünüyor:

UFMAP30 HAREKET DOSYASI BAKIM 20/02/09 10:03:38

AS400 Veritabanı Dosyası: WERCSWKF FTP Dosyası: WERCS

Sıra AS400 Fld Açıklama Tip Len D Kimden

No. Adı FldN

1 WK0003 WK_CLIENTE A 9 3

2 WK0004 WK_CLI_SAP A 10 4

3 WK0005 WK_RAGSOC A 40 5

4 WK0006 WK_RAGSOC A 40 5

4 WK0006 WK_RAGSOC A 40 5

4 WK0006 WK_RAGSOC A 40 5

6 WK0017 WK_ADDRESS2 A 100 19

7 WK0101 WK_INDI A 30 0

8 WK0102 WK_CAP A 5 0

9 WK0103WK_LOC A 25 0

9 WK0103WK_LOC A 25 0

9 WK0103WK_LOC A 25 0

9 = Çıkış F6 = Eşlemeleri Güncelle F9 = Sıralı eşlemeyi kullan F11 = İşlem

Ekran, FTP dosyasının 3 numaralı alanının WK0003 adlı veritabanı dosyasının ilk alanına, 4 numaralı alanın WK0004'e kopyalandığını gösteriyor. . Sayının sıfır olduğu alanlar kopyalanmaz, ancak hedef dosyada doğru şekilde sıfırlanır (sıfır veya boşluk ile).

Aşağıdaki noktalara dikkat edin:

  • Kopyalanacak dosyaya FTP dosyası denir, çünkü normal olarak bir FTP aktarımı kullanılarak AS / 400'e gönderilir.
  • Kullanıcı, hem FTP dosyasının hem de hedef AS / 400 veritabanı dosyasının adını ve kitaplığını belirtmelidir.
  • Komutlar alan ayırıcı ve ondalık nokta için bazı varsayılanlar kullanır, ancak bunlar kullanıcı tarafından değiştirilebilir.
  • Alan Haritalarını Göster parametresi 'Y' olarak ayarlandığında, kullanıcı önceden tanımlanmış alan haritalarını görecek veya yeni haritalamalara girecektir.
  • Kullanıcı komutu ilk kez yeni bir ftp ve hedef dosyaya ilk kez çağırdığında, program veritabanı dosyasının alan tanımlarını çıkarır ve kullanıcının daha sonra olan alan haritalarına girmesine izin vermek için haritalama ekranını görüntüler. gelecekte yeniden kullanıma izin vermek için saklanır.

UCPYTOFTP adlı benzer bir yardımcı program, verilerin AS / 400 veritabanı dosyasından Linux / Unix veya Windows makinesine indirilecek bir metin dosyasına kopyalanmasına izin veriyor.

Yardımcı Programlar ve dokümanları indirilebilir. web sitemden bedava. Programlar, Özgür Yazılım Vakfı tarafından yayınlanan GNU Genel Kamu Lisansı koşulları altında yeniden dağıtılabilen ve / veya değiştirilebilen özgür bir yazılımdır.