Beispiel #1
0
 public DataSession(IDatabaseEngine database)
     : this(database,
            new CommandFactory(database),
            new AutoCommitExecutionState(database.GetConnection(), database.GetDataAdapter()),
            new TransactionalExecutionState(database.GetConnection(), database.GetDataAdapter()))
 {
 }
 public DataSession(IDatabaseEngine database)
     : this(database,
            new CommandFactory(database),
            new AutoCommitExecutionState(database.GetConnection(), database.GetDataAdapter()),
            new TransactionalExecutionState(database.GetConnection(), database.GetDataAdapter()))
 {
 }
        public void CreateChunkTable()
        {
            DropChunkTable();
            var query = File.ReadAllText(Path.Combine(_folder, "CreateChunkTable.sql"));

            query = query.Replace("{sc}", _schemaName);

            using (var connection = _dbEngine.GetConnection(_connectionString))
                using (var cmd = _dbEngine.GetCommand(query, connection))
                {
                    cmd.ExecuteNonQuery();
                }
        }
 public void ValidateConnection()
 {
     using (IDbConnection connection = _database.GetConnection())
     {
         connection.Open();
     }
 }
        public void CreateDatabase(string query)
        {
            var sqlConnectionStringBuilder = new OdbcConnectionStringBuilder(_connectionString);
            var database = sqlConnectionStringBuilder["database"];

            // TMP
            var mySql = _connectionString.ToLower().Contains("mysql");

            if (_connectionString.ToLower().Contains("mysql"))
            {
                sqlConnectionStringBuilder["database"] = "mysql";
            }
            else if (_connectionString.ToLower().Contains("postgres"))
            {
                sqlConnectionStringBuilder["database"] = "postgres";
            }
            else if (_connectionString.ToLower().Contains("amazon redshift"))
            {
                sqlConnectionStringBuilder["database"] = "poc";
            }
            else
            {
                sqlConnectionStringBuilder["database"] = "master";
            }

            //using (var connection = SqlConnectionHelper.OpenOdbcConnection(sqlConnectionStringBuilder.ConnectionString))
            using (var connection = _engine.GetConnection(sqlConnectionStringBuilder.ConnectionString))
            {
                query = string.Format(query, database);

                foreach (var subQuery in query.Split(new[] { "\r\nGO", "\nGO" }, StringSplitOptions.None))
                {
                    //using (var command = new OdbcCommand(subQuery, connection))
                    using (var command = _engine.GetCommand(subQuery, connection))
                    {
                        command.CommandTimeout = 30000;
                        command.ExecuteNonQuery();
                    }
                }
            }
        }
        //public KeyValuePair<string, Exception> Load(IDatabaseEngine sourceEngine, string sourceSchemaName, List<QueryDefinition> sourceQueryDefinitions, OdbcConnection sourceConnection, string vendor)
        public KeyValuePair <string, Exception> Load(IDatabaseEngine sourceEngine, string sourceSchemaName, List <QueryDefinition> sourceQueryDefinitions, string sourceConnectionString, string vendor)
        {
            using var sourceConnection = sourceEngine.GetConnection(sourceConnectionString);
            var fileName         = string.Empty;
            var query            = string.Empty;
            var connectionString = string.Empty;

            try
            {
                var timer = new Stopwatch();
                timer.Start();
                foreach (var qd in sourceQueryDefinitions)
                {
                    if (qd.Providers != null)
                    {
                        continue;
                    }
                    if (qd.Locations != null)
                    {
                        continue;
                    }
                    if (qd.CareSites != null)
                    {
                        continue;
                    }

                    fileName = qd.FileName;

                    var sql = GetSqlHelper.GetSql(sourceEngine.Database,
                                                  qd.GetSql(vendor, sourceSchemaName),
                                                  sourceSchemaName);

                    if (string.IsNullOrEmpty(sql))
                    {
                        continue;
                    }

                    var q = string.Format(sql, ChunkId);

                    using (var cdm = sourceEngine.GetCommand(q, sourceConnection))
                    {
                        cdm.CommandTimeout = 30000;
                        using (var reader =
                                   sourceEngine.ReadChunkData(sourceConnection, cdm, qd, ChunkId,
                                                              Prefix))
                        {
                            while (reader.Read())
                            {
                                PopulateData(qd, reader);
                            }
                        }
                    }
                }

                timer.Stop();
            }
            catch (Exception e)
            {
                var info = new StringBuilder();
                info.AppendLine("SourceEngine=" + sourceEngine);
                info.AppendLine("SourceConnectionString=" + connectionString);
                info.AppendLine("File name=" + fileName);
                info.AppendLine("Query:");
                info.AppendLine(query);

                return(new KeyValuePair <string, Exception>(info.ToString(), e));
            }


            return(new KeyValuePair <string, Exception>(null, null));
        }