private static int GenSqlMeta(NameValueCollection parameters) { var connectionString = parameters["connection-string"]; var dbConnectionString = parameters["db-connection-string"]; var parametersAreValid = !string.IsNullOrEmpty(connectionString) && !string.IsNullOrEmpty(dbConnectionString); if (!parametersAreValid) { Console.Out.WriteLine("Invalid arguments"); Console.Out.WriteLine( "Usage: Generator.exe -cmd gen-sql-meta -connection-string <string> -db-connection-string <connection string for PostgreeSql db>"); return(-1); } GlobalContext globalContext = null; LogHelpers.LogWithTiming(string.Format("connecting to [{0}]", connectionString), () => globalContext = new GlobalContext(new GlobalContextFactory().Create(connectionString))); var postgreeSqlDatabase = new PostgreeSqlDatabase(dbConnectionString); var postgreeSqlSchemaStore = new PostgreeSqlSchemaStore(postgreeSqlDatabase); var schemaCreator = new PostgreeSqlSchemaCreator(postgreeSqlSchemaStore, postgreeSqlDatabase, globalContext); schemaCreator.Recreate(); return(0); }
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)); }
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); }