none
How to Oracle increase the speed of bulk copy RRS feed

  • Question

  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace OracleDBFasterTest
    {
        class Dic1
        {
            public DateTime dtt { get; set; }
            public string tickerr { get; set; }
            public string mmm { get; set; }
            public int indd { get; set; }
            public DateTime datee { get; set; }
            public string timee { get; set; }
            public double openn { get; set; }
            public double highh { get; set; }
            public double loww { get; set; }
            public double closee { get; set; }
            public double voll { get; set; }
            

            public Dic1(DateTime datetimeID, string tickerID, string mmmID, int indID, DateTime dateID, string timeID, double openID, double highID, double lowID, double closeID, double volID)
            {
                dtt = datetimeID;
                tickerr = tickerID;
                mmm = mmmID;
                indd = indID;
                datee = dateID;
                timee = timeID;
                openn = openID;
                highh = highID;
                loww = lowID;
                closee = closeID;
                voll = volID;
            }


        }
    }

    //////////////////////////////////////////////////////Program.cs///////////////////////////////////////////////////////////////////


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    using Oracle.ManagedDataAccess.Client;
    using Oracle.ManagedDataAccess.Types;
    using Oracle.ManagedDataAccess.EntityFramework;



    namespace OracleDBFasterTest
    {
        class Program
        {
            static void Main(string[] args)
            {

                OracleConnection conn = new OracleConnection("Data Source = (DESCRIPTION = " + "(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))" +
                    "(CONNECT_DATA = " +
                    "(SERVER = DEDICATED)" +
                    "(SERVICE_NAME = orcl)" +
                    ")" +
                    ");User Id = system; Password = Hs1453;");
                conn.Open();
                string sql = "INSERT INTO ODATA2 (TICKER_,MM_,IND_,DATE_,TIME_,OPEN_,HIGH_,LOW_,CLOSE_,VOL_,DATETIME_) values (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11)";
             TICKER_,MM_,IND_,DATE_,TIME_,OPEN_,HIGH_,LOW_,CLOSE_,VOL_,DATETIME_";
                OracleCommand cmd = new OracleCommand(sql, conn);

                List<string[]> ee = File.ReadAllLines("C:\\Database\\EURUSD\\EURUSD.txt").Select(d => d.Split(',')).ToList();
                Dictionary<DateTime, Dic1> xf = new Dictionary<DateTime, Dic1>();

                foreach (string[] item in ee)
                {
                    string y = "M1";
                    int x = 0;
                    string dt = string.Concat(item[1].Substring(6, 2), ".", item[1].Substring(4, 2), ".", item[1].Substring(0, 4), " ", item[2].Substring(0, 2), ":", item[2].Substring(2, 2), ":", item[2].Substring(4, 2));
                    string tar_ = string.Concat(item[1].Substring(6, 2), ".", item[1].Substring(4, 2), ".", item[1].Substring(0, 4));
                    string time_ = string.Concat(item[2].Substring(0, 2), ":", item[2].Substring(2, 2), ":", item[2].Substring(4, 2));

                    xf.Add(Convert.ToDateTime(dt), new Dic1(Convert.ToDateTime(dt), item[0],y,x,Convert.ToDateTime(tar_),time_, Convert.ToDouble(item[3]), Convert.ToDouble(item[4]), Convert.ToDouble(item[5]), Convert.ToDouble(item[6]), Convert.ToDouble(item[7])));

                }

                foreach (var item in xf)
                {
                        cmd.Parameters.Clear();
                        cmd.Parameters.Add("1", item.Value.tickerr);
                        cmd.Parameters.Add("2", item.Value.mmm);
                        cmd.Parameters.Add("3", null);
                        cmd.Parameters.Add("4", item.Value.datee);
                        cmd.Parameters.Add("5", item.Value.timee);
                        cmd.Parameters.Add("6", item.Value.openn);
                        cmd.Parameters.Add("7", item.Value.highh);
                        cmd.Parameters.Add("8", item.Value.loww);
                        cmd.Parameters.Add("9", item.Value.closee);
                        cmd.Parameters.Add("10", item.Value.voll);
                        cmd.Parameters.Add("11", item.Key);
                        cmd.ExecuteNonQuery();

                   (TICKER_,MM_,IND_,DATE_,TIME_,OPEN_,HIGH_,LOW_,CLOSE_,VOL_,DATETIME_) VALUES ("+item.Value.tickerr+", "+item.Value.mmm+", "+item.Value.indd+", "+item.Value.datee+", "+item.Value.timee+", "+item.Value.openn+", "+item.Value.highh+", "+item.Value.loww+", "+item.Value.closee+", "+item.Value.voll+", "+item.Key+")";


                }
                conn.Close();
            }
        }

                                                                           
    Monday, July 31, 2017 2:42 PM