private static string Translate(QuerySource source, string queryText, DateTime runTimestamp) { var db = new PostgreeSqlDatabase(source.ConnectionString); var schemeStore = new PostgreeSqlSchemaStore(db); var translator = new QueryToSqlTranslator(schemeStore, source.Areas) { CurrentDate = runTimestamp }; return(translator.Translate(queryText)); }
protected void CheckTranslate(string mappings, string sql, string expected, params int[] areas) { var inmemoryMappingStore = Parse(SpacesToTabs(mappings).Trim()); var sqlTranslator = new QueryToSqlTranslator(inmemoryMappingStore, areas) { CurrentDate = currentDate }; var translated = sqlTranslator.Translate(sql); var translatedLines = SpacesToTabs(translated.Trim()) .Split(new[] { Environment.NewLine }, StringSplitOptions.None); var expectedLines = SpacesToTabs(expected.Trim()) .Split(new[] { Environment.NewLine }, StringSplitOptions.None); Console.WriteLine("Input:\r\n{0}\r\n", sql); Console.WriteLine("Translated:\r\n{0}\r\n", translated); Console.WriteLine("Expected:\r\n{0}\r\n", expected); Assert.That(translatedLines, Is.EqualTo(expectedLines)); }
private static int TranslateSql(NameValueCollection parameters) { var connectionString = parameters["connection-string"]; var queryFile = parameters["query-file"]; var parametersAreValid = !string.IsNullOrEmpty(connectionString) && !string.IsNullOrEmpty(queryFile); if (!parametersAreValid) { Console.Out.WriteLine("Invalid arguments"); Console.Out.WriteLine( "Usage: Generator.exe -cmd translate-sql -connection-string <1c db connection string> -query-file <path to file with 1c query>"); return(-1); } var db = new PostgreeSqlDatabase(connectionString); var mappingSchema = new PostgreeSqlSchemaStore(db); var translator = new QueryToSqlTranslator(mappingSchema, new int[0]); var query = File.ReadAllText(queryFile); var sql = translator.Translate(query); Console.Out.WriteLine(sql); return(0); }
public bool Execute() { var runTimestamp = DateTime.Now; var s = Stopwatch.StartNew(); var sourceThreads = new Thread[sources.Length]; using (var writer = new BatchWriter(target, targetTableName, 1000, historyMode)) { var w = writer; for (var i = 0; i < sourceThreads.Length; i++) { var source = sources[i]; sourceThreads[i] = new Thread(delegate(object _) { try { var mappingSchema = new PostgreeSqlSchemaStore(source.db); var translator = new QueryToSqlTranslator(mappingSchema, source.areas) { CurrentDate = runTimestamp }; var sql = translator.Translate(queryText); if (dumpSql) { Console.Out.WriteLine("\r\n[{0}]\r\n{1}\r\n====>\r\n{2}", source.db.ConnectionString, queryText, sql); } source.db.Execute(sql, new object[0], c => { using (var reader = c.ExecuteReader()) { w.EnsureTable(reader); while (reader.Read()) { if (errorOccured) { throw new OperationCanceledException(); } w.InsertRow(reader); } } }); } catch (OperationCanceledException) { } catch (Exception e) { errorOccured = true; Console.Out.WriteLine("error for [{0}]\r\n{1}", source.db.ConnectionString, e); } }); sourceThreads[i].Start(); } foreach (var t in sourceThreads) { t.Join(); } } s.Stop(); Console.Out.WriteLine("\r\ndone, [{0}] millis", s.ElapsedMilliseconds); return(!errorOccured); }