internal BulkCopyBaseProvider(BulkCopySession bcSessionData, Dictionary<string, string> logic,
     ScopeTableCollection scopeDescription)
 {
     SessionData = bcSessionData;
     ScopeDescription = scopeDescription;
     Logic = logic;
 }
 internal BulkCopyBaseProvider(BulkCopySession bcSessionData, Dictionary <string, string> logic,
                               ScopeTableCollection scopeDescription)
 {
     SessionData      = bcSessionData;
     ScopeDescription = scopeDescription;
     Logic            = logic;
 }
Exemple #3
0
        public void Initialize(Dictionary <string, object> param)
        {
            _initializedParam = param;
            ScriptType[] scopeScript = { ScriptType.None };
            object       v;

            if (_initializedParam.TryGetValue("ScriptType", out v))
            {
                scopeScript = v as ScriptType[];
            }
            if (_initializedParam.TryGetValue("SkipTables", out v))
            {
                _skipTables = v as string[];
            }
            if (_ds == null)
            {
                _ds = GetRowCount();
                var query = _ds.Tables[0].AsEnumerable();
                _scopeTables = query.Select(dr => dr.Field <string>("tablename")).ToArray();
            }
            _scopeDescription = ExtractSchema(_scopeTables);
            SetupScript(scopeScript);
        }
Exemple #4
0
 internal ScriptEngine(BulkCopySession request, ScopeTableCollection scopeDescription)
 {
     _request = request;
     _scopeDescription = scopeDescription;
 }
Exemple #5
0
 private ScopeTableCollection ExtractSchema(string[] schemaList)
 {
     var tablesInfo = new ScopeTableCollection();
     var extractSchema = SqlTemplate.Get("ExtractSchema");
     using (var con = new SqlConnection(_request.ConnectionString))
     {
         using (var cmd = new SqlCommand())
         {
             con.Open();
             foreach (var sequence in schemaList)
             {
                 try
                 {
                     cmd.Parameters.Clear();
                     cmd.Connection = con;
                     cmd.CommandText = extractSchema;
                     cmd.CommandType = CommandType.Text;
                     cmd.Parameters.Add("@objname", SqlDbType.NVarChar).Value = sequence;
                     ScopeColumnCollection tableInfo;
                     using (var reader = cmd.ExecuteReader())
                     {
                         tableInfo = new ScopeColumnCollection();
                         if (!reader.HasRows)
                             throw new Exception($"Table {sequence} does not exists.");
                         while (reader.Read())
                         {
                             tableInfo.Add(new ScopeColumn
                             {
                                 Name = reader.GetString(0),
                                 Type = Runtime.GetType(reader.GetString(1)),
                                 Length = reader.GetInt32(2),
                                 Primary = Runtime.CheckInternalKey(_request.CustomKeyDefinitions, sequence, reader.GetString(0), reader.GetBoolean(4))
                             });
                         }
                     }
                     var primaryExists = (from ScopeColumn ci in tableInfo where ci.Primary select ci.Primary).FirstOrDefault();
                     if (primaryExists)
                         tablesInfo.Add(new ScopeTable { Name = sequence, Columns = tableInfo });
                     else
                     {
                         if (!_skipList.ContainsKey(sequence))
                         {
                             _skipList.Add(sequence, "Table needs primary key or clustered index.");
                         }
                     }
                 }
                 catch (Exception ex)
                 {
                     if (!_skipList.ContainsKey(sequence))
                     {
                         _skipList.Add(sequence, ex.ToString());
                     }
                 }
             }
         }
         _scopeDescription = tablesInfo;
         return tablesInfo;
     }
 }
Exemple #6
0
 public void SetSourceScript(Dictionary<string, object> dict)
 {
     _scopeDescription = dict["ScopeDescription"] as ScopeTableCollection;
     _logic = dict["ScriptLogic"] as Dictionary<string, string>;
 }
Exemple #7
0
 public void Initialize(Dictionary<string, object> param)
 {
     _initializedParam = param;
     ScriptType[] scopeScript = { ScriptType.None };
     object v;
     if (_initializedParam.TryGetValue("ScriptType", out v))
     {
         scopeScript = v as ScriptType[];
     }
     if (_initializedParam.TryGetValue("SkipTables", out v))
     {
         _skipTables = v as string[];
     }
     if (_ds == null)
     {
         _ds = GetRowCount();
         var query = _ds.Tables[0].AsEnumerable();
         _scopeTables = query.Select(dr => dr.Field<string>("tablename")).ToArray();
     }
     _scopeDescription = ExtractSchema(_scopeTables);
     SetupScript(scopeScript);
 }
Exemple #8
0
 internal ScriptEngine(BulkCopySession request, ScopeTableCollection scopeDescription)
 {
     _request          = request;
     _scopeDescription = scopeDescription;
 }
Exemple #9
0
 public void SetSourceScript(Dictionary <string, object> dict)
 {
     _scopeDescription = dict["ScopeDescription"] as ScopeTableCollection;
     _logic            = dict["ScriptLogic"] as Dictionary <string, string>;
 }
Exemple #10
0
        private ScopeTableCollection ExtractSchema(string[] schemaList)
        {
            var tablesInfo    = new ScopeTableCollection();
            var extractSchema = SqlTemplate.Get("ExtractSchema");

            using (var con = new SqlConnection(_request.ConnectionString))
            {
                using (var cmd = new SqlCommand())
                {
                    con.Open();
                    foreach (var sequence in schemaList)
                    {
                        try
                        {
                            cmd.Parameters.Clear();
                            cmd.Connection  = con;
                            cmd.CommandText = extractSchema;
                            cmd.CommandType = CommandType.Text;
                            cmd.Parameters.Add("@objname", SqlDbType.NVarChar).Value = sequence;
                            ScopeColumnCollection tableInfo;
                            using (var reader = cmd.ExecuteReader())
                            {
                                tableInfo = new ScopeColumnCollection();
                                if (!reader.HasRows)
                                {
                                    throw new Exception($"Table {sequence} does not exists.");
                                }
                                while (reader.Read())
                                {
                                    tableInfo.Add(new ScopeColumn
                                    {
                                        Name    = reader.GetString(0),
                                        Type    = Runtime.GetType(reader.GetString(1)),
                                        Length  = reader.GetInt32(2),
                                        Primary = Runtime.CheckInternalKey(_request.CustomKeyDefinitions, sequence, reader.GetString(0), reader.GetBoolean(4))
                                    });
                                }
                            }
                            var primaryExists = (from ScopeColumn ci in tableInfo where ci.Primary select ci.Primary).FirstOrDefault();
                            if (primaryExists)
                            {
                                tablesInfo.Add(new ScopeTable {
                                    Name = sequence, Columns = tableInfo
                                });
                            }
                            else
                            {
                                if (!_skipList.ContainsKey(sequence))
                                {
                                    _skipList.Add(sequence, "Table needs primary key or clustered index.");
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            if (!_skipList.ContainsKey(sequence))
                            {
                                _skipList.Add(sequence, ex.ToString());
                            }
                        }
                    }
                }
                _scopeDescription = tablesInfo;
                return(tablesInfo);
            }
        }