156 lines
6.5 KiB
C#
156 lines
6.5 KiB
C#
using System;
|
|
using Npgsql;
|
|
using FileHelpers;
|
|
|
|
namespace test
|
|
{
|
|
class Program
|
|
{
|
|
private
|
|
|
|
static void Main(string[] args)
|
|
{
|
|
//var i = new Int32();
|
|
|
|
//-------------------------------------------establis connections-------------------------------------------------
|
|
//var ibmc = new System.Data.Odbc.OdbcConnection("Driver={iSeries Access ODBC Driver};System=TEST400;Uid=tstdillen;Pwd=tstdillen");
|
|
var ibmc = new System.Data.Odbc.OdbcConnection("Driver={iSeries Access ODBC Driver};System=S7830956;Uid=PTROWBRIDG;Pwd=QQQX53@027");
|
|
var pgc = new NpgsqlConnection("Host=ushcc10091;Port=5432;Username=ptrowbridge;Password=qqqx53!026;Database=ubm;ApplicationName=runner");
|
|
ibmc.Open();
|
|
pgc.Open();
|
|
|
|
//----------------------------------------------setup commands---------------------------------------------------
|
|
var ibmcmd = new System.Data.Odbc.OdbcCommand();
|
|
ibmcmd.Connection = ibmc;
|
|
//ibmcmd.CommandText = "SELECT cast(ID as int) ID, TBLN, ACTN, TS, SU, COL, REPLACE(OLDV,X'00',CHR(32)) OLDV, REPLACE(NEWV,X'00',CHR(32)) NEWV, DTYPE, LENG, SCAL FROM QGPL.TRIG_LOG_EAV WHERE ID > 236832";
|
|
//ibmcmd.CommandText = "SELECT * FROM RLARP.OSM WHERE ITER >= '2018-08-15-11.23.42.009654'";
|
|
//ibmcmd.CommandText = "SELECT * FROM RLARP.OSMP";
|
|
//ibmcmd.CommandText = "SELECT * FROM LGDAT.GLDATE";
|
|
//ibmcmd.CommandText = "SELECT * FROM LGDAT.STKMM";
|
|
|
|
ibmcmd.CommandText = System.IO.File.ReadAllText(@"C:\Users\ptrowbridge\Documents\runner\osm.sql");
|
|
|
|
|
|
|
|
var pgcmd = new NpgsqlCommand();
|
|
pgcmd.Connection = pgc;
|
|
//pgcmd.CommandText = "SELECT * FROM rlarp.trig_log_eav WHERE 0=1";
|
|
pgcmd.CommandText = "SELECT * FROM rlarp.osmi WHERE 0=1";
|
|
//pgcmd.CommandText = "SELECT * FROM lgdat.gldate WHERE 0=1";
|
|
//pgcmd.CommandText = "SELECT * FROM lgdat.stkmm WHERE 0=1";
|
|
|
|
//---------------------------------------------setup adapters---------------------------------------------------------
|
|
//var ibmds = new System.Data.DataSet();
|
|
//var ibmda = new System.Data.Odbc.OdbcDataAdapter(ibmcmd);
|
|
//ibmda.Fill(ibmds);
|
|
|
|
|
|
var pgds = new System.Data.DataSet();
|
|
var pgda = new NpgsqlDataAdapter(pgcmd);
|
|
pgda.Fill(pgds);
|
|
//pgda.UpdateBatchSize = 100;
|
|
|
|
Console.Write("etl start:" + DateTime.Now.ToString());
|
|
Console.Write(Environment.NewLine);
|
|
pgc.BeginTransaction();
|
|
|
|
//--------------------------------------------move to target--------------------------------------------------------
|
|
var ibmdr = ibmcmd.ExecuteReader();
|
|
var getv = new object[ibmdr.FieldCount];
|
|
int r = 0;
|
|
int t = 0;
|
|
string sql = "";
|
|
string nr = "";
|
|
string nc = "";
|
|
var pgcom = pgc.CreateCommand();
|
|
while (ibmdr.Read()) {
|
|
r = r + 1;
|
|
t = t +1 ;
|
|
nr = "";
|
|
for ( int i = 0 ; i < ibmdr.GetValues(getv);i++) {
|
|
if (getv[i] != null) {
|
|
switch (ibmdr.GetDataTypeName(i)){
|
|
case "VARCHAR":
|
|
nc = "'" + getv[i].ToString().Replace("'","''") + "'";
|
|
break;
|
|
case "CHAR":
|
|
nc = "'" + getv[i].ToString().Replace("'","''") + "'";
|
|
break;
|
|
case "DATE":
|
|
if (getv[i].ToString() == "1/1/0001 12:00:00 AM" || getv[i].ToString() == "") {
|
|
nc = "NULL";
|
|
}
|
|
else {
|
|
nc = "'" + getv[i].ToString() + "'";
|
|
}
|
|
break;
|
|
case "TIME":
|
|
nc = "'" + getv[i].ToString() + "'";
|
|
break;
|
|
case "TIMESTAMP":
|
|
nc = "'" + getv[i].ToString() + "'";
|
|
break;
|
|
default:
|
|
if (getv[i].ToString() != "") {
|
|
nc = getv[i].ToString();
|
|
}
|
|
else {
|
|
nc = "NULL";
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
else {
|
|
nc = "NULL";
|
|
}
|
|
if (i!=0) {
|
|
nr = nr + ",";
|
|
}
|
|
nr = nr + nc;
|
|
}
|
|
if (sql!="") {
|
|
sql = sql + ",";
|
|
}
|
|
sql = sql + "(" + nr + ")";
|
|
if (r == 250) {
|
|
r = 0;
|
|
sql = "INSERT INTO rlarp.osmi VALUES " + sql;
|
|
pgcom.CommandText = sql;
|
|
System.IO.File.WriteAllText(@"C:\Users\ptrowbridge\Downloads\"+ t.ToString()+".sql",sql);
|
|
try {
|
|
pgcom.ExecuteNonQuery();
|
|
}
|
|
catch (Exception e) {
|
|
Console.Write(Environment.NewLine);
|
|
Console.Write(e.Message);
|
|
ibmc.Close();
|
|
pgc.Close();
|
|
}
|
|
sql = "";
|
|
}
|
|
}
|
|
if (r != 0) {
|
|
sql = "INSERT INTO rlarp.osmi VALUES " + sql;
|
|
pgcom.CommandText = sql;
|
|
System.IO.File.WriteAllText(@"C:\Users\ptrowbridge\Downloads\"+ t.ToString()+".sql",sql);
|
|
try {
|
|
pgcom.ExecuteNonQuery();
|
|
}
|
|
catch (Exception e) {
|
|
Console.Write(Environment.NewLine);
|
|
Console.Write(e.Message);
|
|
ibmc.Close();
|
|
pgc.Close();
|
|
}
|
|
sql = "";
|
|
}
|
|
|
|
ibmc.Close();
|
|
pgc.Close();
|
|
|
|
Console.Write("etl end:" + DateTime.Now.ToString());
|
|
|
|
}
|
|
}
|
|
}
|