private void GenerateCsv(SqlTableSelect table) { _logger.Log("\t" + table.TableName); var select = _selectionFilteringStrategy.GetFilteredSelectStatement(table); var results = _queryExecutor.ExecuteSelectStatement(select); foreach (var column in table.ExcludedColumns) { results.Columns.Remove(column); } var csvOptions = new CsvOptions(DontCare, _delimiter, results.Columns.Count) {DateFormat = "g", Encoding = Encoding.UTF8}; var filename = _destinationDirectory + table.TableName.ToLower() + ".csv"; try { CsvEngine.DataTableToCsv(results, filename, csvOptions); } catch (UnauthorizedAccessException ex) { throw new nDumpApplicationException( "nDump cannot access the CSV file at " + filename + ". Is it checked out (TFS) or modifiable? This error may also occur if the file has been opened by another program.", ex); } }
private void RunAllScriptFilesFor(SqlTableSelect table) { IEnumerator<SqlScript> scriptEnumerator = _sqlScriptFileStrategy.GetEnumeratorFor(table.TableName); while (scriptEnumerator.MoveNext()) { var script = scriptEnumerator.Current; ExecuteScriptIfNotEmpty(script); } }
public void ShouldExecuteQueryForEachFilterSelect() { var queryExecutor = new Mock<IQueryExecutor>(); var filterStrategy = new UseFilterIfPresentStrategy(queryExecutor.Object, new NullLogger()); var select1=new SqlTableSelect(null,"1",false); var select2 = new SqlTableSelect(null, "2", false); queryExecutor.Setup(q => q.ExecuteNonQueryStatement("1")); queryExecutor.Setup(q => q.ExecuteNonQueryStatement("2")); filterStrategy.SetupFilterTables(new List<SqlTableSelect>{select1,select2}); queryExecutor.VerifyAll(); }
public void ShouldExecuteEachScriptFoundByStrategy() { var queryExecutor = new Mock<IQueryExecutor>(); var scriptStrategy = new Mock<ISqlScriptFileStrategy>(); var table1 = new SqlTableSelect("1"); scriptStrategy.Setup(ss => ss.GetEnumeratorFor(table1.TableName)).Returns(new List<SqlScript> {new SqlScript("01", "01")}.GetEnumerator()); queryExecutor.Setup(qe => qe.ExecuteNonQueryStatement("01")); var sqlDataImporter = new SqlDataImporter(new NullLogger(), queryExecutor.Object, scriptStrategy.Object); sqlDataImporter.InsertDataIntoDesinationTables(new List<SqlTableSelect> { table1 }); queryExecutor.VerifyAll(); scriptStrategy.VerifyAll(); }
public void ShouldDeleteFromTablesInReverseOrder() { var queryExecutor= new Mock<IQueryExecutor>(); var sqlDataImporter = new SqlDataImporter(new NullLogger(), queryExecutor.Object,null); var calls = new List<string>(); var table1 = new SqlTableSelect("1"); var table2=new SqlTableSelect("2"); var delete2 = "delete from 2"; queryExecutor.Setup(qe => qe.ExecuteNonQueryStatement(delete2)).Callback((string s)=> calls.Add(s)); var delete1 = "delete from 1"; queryExecutor.Setup(qe => qe.ExecuteNonQueryStatement(delete1)).Callback((string s) => calls.Add(s)); sqlDataImporter.DeleteDataFromAllDestinationTables(new List<SqlTableSelect>{table1,table2}); Assert.AreEqual(delete1,calls[1]); Assert.AreEqual(delete2,calls[0]); }
public void ShouldContinueThenThrowTearDownExceptionWhenDeleteFails() { var queryExecutor = new Mock<IQueryExecutor>(); var filterStrategy = new UseFilterIfPresentStrategy(queryExecutor.Object, new NullLogger()); var select1 = new SqlTableSelect("1", null, false); var select2 = new SqlTableSelect("2", null, false); queryExecutor.Setup(q => q.ExecuteNonQueryStatement("drop table 1")).Throws(new Exception()); queryExecutor.Setup(q => q.ExecuteNonQueryStatement("drop table 2")); try { filterStrategy.TearDownFilterTables(new List<SqlTableSelect> { select1, select2 }); throw new AssertionException("ExpectedException was not thrown"); } catch (TearDownException) { queryExecutor.VerifyAll(); } }
public string GetFilteredSelectStatement(SqlTableSelect table) { return !String.IsNullOrWhiteSpace(table.Select ) ? table.Select : "select * from " + table.TableName; }
public string GetFilteredSelectStatement(SqlTableSelect table) { return "select * from " + table.TableName; }