Esempio n. 1
0
        public static void Main(string[] args)
        {
            Spartacus.Utils.ProgressEventClass v_progress;
            Spartacus.Utils.ErrorEventClass v_error;
            Spartacus.Database.Command v_cmd;
            Spartacus.Database.Generic database = new Spartacus.Database.Postgresql("192.168.56.2","cotacoes","psotgres","Crc19D98C");

            v_progress = new Spartacus.Utils.ProgressEventClass();
            v_error = new Spartacus.Utils.ErrorEventClass();

            int[] v_exp = { 1, 5, 10, 50, 100, 250, 500, 750, 1000, 2000, 3000 };
            System.Diagnostics.Stopwatch v_watch = new System.Diagnostics.Stopwatch();
            foreach (int v_bloco in v_exp)
            {
                database.v_blocksize = v_bloco;
                v_watch.Start;

                database.Open();
                database.TransferFromFile(
                    "Caminho Do Arquivo Aqui",
                    ";",
                    "",
                    false,
                    System.Text.Encoding.UTF8,
                    "cotacoes", // tabela existe
                    "(dia,codmoeda,tipomoeda,siglamoeda,taxacompra,taxavenda,parcompra,parvenda)",
                    v_cmd,
                    v_progress,
                    v_error
                );
                database.Close();

                v_watch.Stop;
                Console.WriteLine("Tamanho de bloco = {0}, tempo total = {1}", v_bloco, v_watch.Elapsed);
            }
        }
Esempio n. 2
0
        public static void Main(string[] args)
        {
            Spartacus.Database.Generic v_database;
            Spartacus.Utils.ProgressEventClass v_progress;
            Spartacus.Utils.ErrorEventClass v_error;
            Spartacus.Database.Command v_cmd;

            v_database = new Spartacus.Database.Sqlite("../../../databases/cotacoes_tamanhobloco.db");
            v_database.v_blocksize = 10000;

            v_progress = new Spartacus.Utils.ProgressEventClass();
            v_progress.ProgressEvent += OnProgress;
            v_error = new Spartacus.Utils.ErrorEventClass();
            v_error.ErrorEvent += OnError;

            v_cmd = new Spartacus.Database.Command();
            v_cmd.v_text = "(#col0#,#col1#,#col2#,#col3#,#col4#,#col5#,#col6#,#col7#)";
            v_cmd.AddParameter("col0", Spartacus.Database.Type.STRING);
            v_cmd.AddParameter("col1", Spartacus.Database.Type.INTEGER);
            v_cmd.AddParameter("col2", Spartacus.Database.Type.STRING);
            v_cmd.AddParameter("col3", Spartacus.Database.Type.STRING);
            v_cmd.AddParameter("col4", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col4", Spartacus.Database.Locale.EUROPEAN);
            v_cmd.AddParameter("col5", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col5", Spartacus.Database.Locale.EUROPEAN);
            v_cmd.AddParameter("col6", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col6", Spartacus.Database.Locale.EUROPEAN);
            v_cmd.AddParameter("col7", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col7", Spartacus.Database.Locale.EUROPEAN);

            v_database.Open();

            v_database.TransferFromFile(
                args[0],
                ";",
                "",
                false,
                System.Text.Encoding.UTF8,
                "cotacoes", // tabela existe
                "(dia,codmoeda,tipomoeda,siglamoeda,taxacompra,taxavenda,parcompra,parvenda)",
                v_cmd,
                v_progress,
                v_error
            );

            v_database.Close();

            // como fazer o experimento de forma automática
            /*
            int[] v_exp = { 1, 5, 10, 50, 100, 250, 500, 750, 1000, 2000, 3000 };
            System.Diagnostics.Stopwatch v_watch = new System.Diagnostics.Stopwatch();
            foreach (int v_bloco in v_exp)
            {
                v_database.v_blocksize = v_bloco;
                v_watch.Start;

                v_database.Open();
                v_database.TransferFromFile(
                    args[0],
                    ";",
                    "",
                    false,
                    System.Text.Encoding.UTF8,
                    "cotacoes", // tabela existe
                    "(dia,codmoeda,tipomoeda,siglamoeda,taxacompra,taxavenda,parcompra,parvenda)",
                    v_cmd,
                    v_progress,
                    v_error
                );
                v_database.Close();

                v_watch.Stop;
                Console.WriteLine("Tamanho de bloco = {0}, tempo total = {1}", v_bloco, v_watch.Elapsed);
            }
            */
        }
Esempio n. 3
0
 /// <summary>
 /// Evento de erro de transferência de um arquivo para o banco de dados temporário.
 /// </summary>
 private static void OnError(Spartacus.Utils.ErrorEventClass obj, Spartacus.Utils.ErrorEventArgs e)
 {
     throw new Spartacus.Database.Exception(e.v_message);
 }
Esempio n. 4
0
        /// <summary>
        /// Constrói o banco de dados temporário.
        /// </summary>
        /// <param name="p_sql">Texto SQL.</param>
        private void BuildCache(string p_sql)
        {
            Spartacus.Utils.ProgressEventClass v_progress;
            Spartacus.Utils.ErrorEventClass    v_error;
            Spartacus.Utils.Cryptor            v_cryptor;
            System.IO.FileInfo v_info;
            long v_totalsize;

            v_totalsize = 0;
            foreach (string s in this.ExtractFromString(p_sql, "[", "]"))
            {
                if (!s.StartsWith("."))
                {
                    v_info = new System.IO.FileInfo(this.v_service + "/" + s);

                    if (v_info.Exists)
                    {
                        if (p_sql.ToLower().Contains("drop table [" + s.ToLower() + "]"))
                        {
                            this.v_tabletodrop = s.ToLower();
                        }

                        v_totalsize += v_info.Length;
                        this.v_tables.Add(s);
                    }
                    else
                    {
                        if (p_sql.ToLower().Contains("create table [" + s.ToLower() + "]"))
                        {
                            this.v_tables.Add(s.ToLower());
                        }
                        else
                        {
                            throw new Spartacus.Database.Exception("File '{0}' does not exist and is not going to be created.", s);
                        }
                    }
                }
            }

            if (v_totalsize > this.v_cachethreshold)
            {
                v_cryptor           = new Spartacus.Utils.Cryptor("spartacus");
                this.v_tempdatabase = v_cryptor.RandomString() + ".db";
                this.v_database     = new Spartacus.Database.Sqlite(this.v_tempdatabase);
            }
            else
            {
                this.v_tempdatabase = "";
                this.v_database     = new Spartacus.Database.Memory();
            }

            this.v_database.SetTimeout(-1);
            this.v_database.SetExecuteSecurity(false);
            this.v_database.Open();
            this.v_database.Execute("PRAGMA synchronous=OFF");

            v_progress = new Spartacus.Utils.ProgressEventClass();
            v_progress.ProgressEvent += new Spartacus.Utils.ProgressEventClass.ProgressEventHandler(OnProgress);
            v_error             = new Spartacus.Utils.ErrorEventClass();
            v_error.ErrorEvent += new Spartacus.Utils.ErrorEventClass.ErrorEventHandler(OnError);

            foreach (string t in this.v_tables)
            {
                v_info = new System.IO.FileInfo(this.v_service + "/" + t);
                if (v_info.Exists)
                {
                    this.v_database.TransferFromFile(this.v_service + "/" + t, this.v_separator, this.v_delimiter, this.v_header, this.v_encoding, "[" + t + "]", v_progress, v_error);
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Transfere dados do banco de dados atual para um banco de dados de destino.
        /// Conexão com o banco de destino precisa estar aberta.
        /// Não pára a execução se der um problema num comando de inserção específico.
        /// </summary>
        /// <returns>Número de linhas transferidas.</returns>
        /// <param name="p_query">Consulta SQL para buscar os dados no banco atual.</param>
        /// <param name="p_insert">Comando de inserção para inserir cada linha no banco de destino.</param>
        /// <param name="p_destdatabase">Conexão com o banco de destino.</param>
        /// <param name="p_progress">Evento de progresso.</param>
        /// <param name="p_error">Evento de erro.</param>
        public override uint Transfer(string p_query, Spartacus.Database.Command p_insert, Spartacus.Database.Generic p_destdatabase, Spartacus.Utils.ProgressEventClass p_progress, Spartacus.Utils.ErrorEventClass p_error)
        {
            uint v_transfered;

            this.BuildCache(p_query);
            v_transfered = this.v_database.Transfer(p_query, p_insert, p_destdatabase, p_progress, p_error);
            this.DestroyCache();
            return(v_transfered);
        }
Esempio n. 6
0
        public static void Main(string[] args)
        {
            Spartacus.Database.Generic v_database;
            Spartacus.Utils.ProgressEventClass v_progress;
            Spartacus.Utils.ErrorEventClass v_error;
            Spartacus.Database.Command v_cmd;

            v_database = new Spartacus.Database.Sqlite("../../../databases/cotacoes.db");

            v_progress = new Spartacus.Utils.ProgressEventClass();
            v_progress.ProgressEvent += OnProgress;
            v_error = new Spartacus.Utils.ErrorEventClass();
            v_error.ErrorEvent += OnError;

            // carregando arquivo XLSX para tabela que não existe
            /*v_database.TransferFromFile(
                args[0],
                "cotacoes_excel",
                v_progress,
                v_error
            );*/

            // carregando arquivo CSV para tabela que não existe
            /*v_database.TransferFromFile(
                args[0],
                ";",
                "",
                false,
                System.Text.Encoding.UTF8,
                "cotacoes_tmp", // tabela não existe
                v_progress,
                v_error
            );*/

            // carregando arquivo CSV para tabela que existe
            v_cmd = new Spartacus.Database.Command();
            v_cmd.v_text = "(#col0#,#col1#,#col2#,#col3#,#col4#,#col5#,#col6#,#col7#)";
            v_cmd.AddParameter("col0", Spartacus.Database.Type.STRING);
            v_cmd.AddParameter("col1", Spartacus.Database.Type.INTEGER);
            v_cmd.AddParameter("col2", Spartacus.Database.Type.STRING);
            v_cmd.AddParameter("col3", Spartacus.Database.Type.STRING);
            v_cmd.AddParameter("col4", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col4", Spartacus.Database.Locale.EUROPEAN);
            v_cmd.AddParameter("col5", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col5", Spartacus.Database.Locale.EUROPEAN);
            v_cmd.AddParameter("col6", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col6", Spartacus.Database.Locale.EUROPEAN);
            v_cmd.AddParameter("col7", Spartacus.Database.Type.REAL);
            v_cmd.SetLocale("col7", Spartacus.Database.Locale.EUROPEAN);

            v_database.TransferFromFile(
                args[0],
                ";",
                "",
                false,
                System.Text.Encoding.UTF8,
                "cotacoes", // tabela existe
                "(dia,codmoeda,tipomoeda,siglamoeda,taxacompra,taxavenda,parcompra,parvenda)",
                v_cmd,
                v_progress,
                v_error
            );

            // salvando arquivo XLSX com os dados
            //v_database.TransferToFile("select * from cotacoes", "export_cotacoes.xlsx");
        }