Ejemplo n.º 1
0
 public ClickHouseDB(TSchema schema, ClickHouseConnectionSettings settings, CreateDatabaseParameters createParams = null)
 {
     ProxyLog.Info($"{GetType().Name}: Database={settings.Database}; Server={settings.Host}:{settings.Port}");
     ConnectionSettings = settings;
     if (createParams == null)
     {
         CreateParameters = new CreateDatabaseParameters(ClickHouseNodeMode.Autonom);
     }
     else
     {
         CreateParameters = createParams;
         if (CreateParameters.NodeMode != ClickHouseNodeMode.Autonom)
         {
             if (string.IsNullOrWhiteSpace(CreateParameters.Cluster))
             {
                 CreateParameters.Cluster = ConnectionSettings.GetClusterName();
             }
             if (string.IsNullOrWhiteSpace(CreateParameters.Cluster))
             {
                 throw new ArgumentNullException(nameof(CreateParameters.Cluster));
             }
         }
         if (CreateParameters.NodeMode == ClickHouseNodeMode.Distributed)
         {
             if (string.IsNullOrWhiteSpace(CreateParameters.DistribitedSourceDatabaseName))
             {
                 CreateParameters.DistribitedSourceDatabaseName = ConnectionSettings.Database;
             }
         }
     }
     Schema       = schema;
     CommandText  = new DatabaseCommandText(schema);
     TableEngines = new Dictionary <Type, ITableEngine>();
     DefineTableEngines();
 }
Ejemplo n.º 2
0
        public void DropDatabase(bool ifExists = false)
        {
            string cluster = CreateParameters.NodeMode == ClickHouseNodeMode.Replicated ? CreateParameters.Cluster : null;

            using (ClickHouseConnection conn = new ClickHouseConnection(ConnectionSettings.GetConnectionWithoutDb()))
            {
                conn.Open();
                conn.Execute(DatabaseCommandText.DropDatabase(db: ConnectionSettings.Database, ifExists: ifExists, cluster: cluster));
            }
        }
Ejemplo n.º 3
0
        public void CreateDatabase(bool ifNotExists = false, CreateDatabaseMode mode = CreateDatabaseMode.All)
        {
            string cluster = CreateParameters.NodeMode == ClickHouseNodeMode.Replicated ? CreateParameters.Cluster : null;

            using (ClickHouseConnection conn = new ClickHouseConnection(ConnectionSettings.GetConnectionWithoutDb()))
            {
                conn.Open();
                conn.Execute(DatabaseCommandText.CreateDatabase(db: ConnectionSettings.Database, ifNotExists: ifNotExists, cluster: cluster));
                if ((mode & CreateDatabaseMode.Tables) != 0)
                {
                    Schema.Tables.ToList().ForEach(t => t.Create(conn, TableEngines[t.EntityType], db: ConnectionSettings.Database, ifNotExists: ifNotExists, cluster: cluster));
                }
                if ((mode & CreateDatabaseMode.Views) != 0)
                {
                    Schema.Views.ForEach(t => t.Create(conn, ConnectionSettings.Database, ifNotExists: ifNotExists));
                }
                if ((mode & CreateDatabaseMode.Dictionaries) != 0)
                {
                    Schema.Dictionaries.ForEach(t => t.Create(conn, db: ConnectionSettings.Database, ifNotExists: ifNotExists));
                }
            }
        }