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; }
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); }
internal ScriptEngine(BulkCopySession request, ScopeTableCollection scopeDescription) { _request = request; _scopeDescription = scopeDescription; }
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; } }
public void SetSourceScript(Dictionary<string, object> dict) { _scopeDescription = dict["ScopeDescription"] as ScopeTableCollection; _logic = dict["ScriptLogic"] as Dictionary<string, string>; }
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); }
public void SetSourceScript(Dictionary <string, object> dict) { _scopeDescription = dict["ScopeDescription"] as ScopeTableCollection; _logic = dict["ScriptLogic"] as Dictionary <string, string>; }
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); } }