कैसे .400 फ़ाइलों के लिए AS400 टेबल्स निर्यात करने के लिए - कैसे

कैसे .400 फ़ाइलों के लिए AS400 टेबल्स निर्यात करने के लिए

मैंने यह प्रोग्राम इसलिए लिखा है क्योंकि हमारे DB2 डेटाबेस के डेटा प्रकारों को SQL सर्वर आयात निर्यात विज़ार्ड द्वारा ठीक से पहचाना नहीं गया था। मुझे डेटा को प्रबंधनीय प्रारूप में लाने की आवश्यकता थी ताकि मैं रिपोर्टिंग के लिए SQL सर्वर पर आयात कर सकूं। मैं मानता हूँ, मैं त्रुटि से निपटने में थोड़ा और समय बिता सकता था, लेकिन मेरे पास अभी समय नहीं था। मैंने सोचा कि अगर कोई इसका इस्तेमाल कर सकता है तो मैं इसे पोस्ट करूंगा। इसने मुझे वास्तव में बचा लिया क्योंकि पिछले वर्ष में आइरिस की धीरे-धीरे मृत्यु हो गई है।

कुल 2 चरण

चरण 1: दृश्य स्टूडियो में एक vb.net समाधान बनाएं और इसे मॉड्यूल 1.vb में पेस्ट करें।

'
'इस खंड में सभी आयात की आवश्यकता नहीं है, लेकिन मैंने उन्हें कक्षाओं तक आसान पहुंच के लिए रखा है। कम कोड की लाइनें।
'
विकल्प स्पष्ट करें
आयात प्रणाली
आयात प्रणाली
आयात प्रणाली
आयात प्रणाली
आयात प्रणाली
आयात प्रणाली
आयात करता है
आयात करता है
आयात प्रणाली
आयात प्रणाली
आयात प्रणाली
आयात .Data.OleDb
आयात प्रणाली। Data.SqlClient

मॉड्यूल Module1
मंद शेल, tmp, fso, ts, rs1, rs2, rs, लाइन, टेबलनेम, कनेक्टस्ट्रीम, स्कीमा, dbConnIn, फ़ोल्डर, फ़ाइल, सर्वर

उप मुख्य()
स्कीमा = "तुम्हारा"
सर्वर = "आपका पर्यवेक्षक"
connectString = "Dsn =" & server &; uid = उपयोगकर्ता नाम; पासवर्ड = पासवर्ड; प्रणाली = "और सर्वर"; dbq = "& स्कीमा &"; dftpkglib = "& schema &"; languageid = ENU; pkg = " और स्कीमा और "/ DEFAULT (IBM), 2,0,1,0,0;"
dbConnIn = CreateObject ("ADODB.Connection")
dbConnIn.CommandTimeout = 60000
dbConnIn.Open (connectString)
fso = CreateObject ("Scripting.FileSystemObject")

प्रयत्न
मंद tmp
rs = CreateObject ("ADODB.RecordSet")
rs.Open ("TABLE_NAME FAIL से info_schema.tables कहाँ TABLE_SCHEMA =" & स्कीमा & "", dbConnIn)
rs.MoveFirst ()

तालिका नाम = ""

प्रत्येक tmp के लिए rs.fields में
जबकि tmp IsNot Nothing
tableName = tmp.Value.ToString
फ़ोल्डर = "C: APLUS " और स्कीमा और ""
यदि नहीं fso.FolderExists (फ़ोल्डर) तो
fso.CreateFolder (फोल्डर)
अगर अंत

Console.WriteLine (स्कीमा और "।" और तालिका नाम)
कॉल गेटडाटा (स्कीमा, टेबलनेम, डीबीसीएनओएन, फोल्डर)
rs.MoveNext ()

जबकि अंत
आगामी

rs.close ()

अपवाद के रूप में पकड़ो

शेल = CreateObject ("WScript.Shell")
fso = CreateObject ("Scripting.FileSystemObject")
ts = fso.OpenTextFile ("C: APLUS zzz-Error-" & tableame & ".csv", 2, True)
ts.WriteLine (पूर्व)
ts.close ()

समाप्ति का प्रयास करें

अंत उप

सब गेटडाटा (स्ट्रिंग के रूप में बायल स्कीमा, स्ट्रिंग के रूप में बाय टेबल टेबलनेम, ऑब्जेक्ट के रूप में बाइर्फ डीबीकॉन, स्ट्रिंग के रूप में बाईवाल फ़ोल्डर)

प्रयत्न
यदि नहीं fso.FileExists ("C: APLUS " और स्कीमा और "" & तालिका नाम और ".csv") तब।
rs1 = CreateObject ("ADODB.RecordSet")
rs1.Open ("सेलेक्ट * से" और टेबलनेम, dbConnIn)
शेल = CreateObject ("WScript.Shell")
अगर vbNull नहीं तो
rs1.movefirst ()
अगर अंत

fso = CreateObject ("Scripting.FileSystemObject")
ts = fso.OpenTextFile ("C: APLUS " और स्कीमा और "" और सारणीनाम और ".csv", 2, सत्य)
पंक्ति = ""

प्रत्येक tmp2 के लिए rs1.Fields में

लाइन = लाइन और tmp2.Name & ","

आगामी

ts.WriteLine (बाएं (लाइन, लेन (रेखा) - 1))

जबकि rs1.EOF नहीं

पंक्ति = ""

प्रत्येक tmp1 के लिए rs1। फील्ड में

'Console.WriteLine (tmp.Value.GetType ())
'Console.WriteLine (line.GetType ())
'Console.WriteLine (tmp.Value.ToString)
'Console.WriteLine (लाइन)
लाइन = लाइन और "" "" और बदलें (tmp1.Value.ToString, "" "", "" "" "") और "", "

आगामी

ts.WriteLine (बाएं (लाइन, लेन (रेखा) - 1))
अगर vbNull नहीं तो
rs1.MoveNext ()
अगर अंत
जबकि अंत

rs1.close ()
ts.close ()
अगर अंत
अपवाद के रूप में पकड़ो

शेल = CreateObject ("WScript.Shell")
fso = CreateObject ("Scripting.FileSystemObject")
फ़ाइल = "C: APLUS " और स्कीमा और " zzz-Error-" और तालिका नाम और ".cs"।
ts = fso.OpenTextFile ("C: APLUS " और स्कीमा और " zzz-Error-" & tableName & ".csv", 2, True)
ts.WriteLine (पूर्व)
ts.close ()

समाप्ति का प्रयास करें

अंत उप
अंत मॉड्यूल

चरण 2: प्रारंभ पर क्लिक करें और प्रगति की निगरानी करें

1.6GB / डेटा के लिए 35 मिनट से अधिक समय लगा। मुझे यकीन है कि ऐसे मोड़ हैं जो इसे थोड़ा और कुशल बनाने के लिए किए जा सकते हैं, लेकिन मैं पूर्णकालिक प्रोग्रामर नहीं हूं और शोध के लिए समय नहीं है। मैं यह उम्मीद कर रहा हूं कि यह किसी को DB2 डेटाबेस से डेटा को स्थानांतरित करने का प्रयास करने में मदद करेगा आईबीएम iseries AS400 सिस्टम पर SQL सर्वर के लिए प्रबंधनीय प्रारूप।

बेझिझक आलोचना करें या सुधार करें।