Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("Usage: SQLTranslator [input filename] [output filename]");
                Environment.Exit(0);
            }
            string fileName   = args[0];
            string outputName = args[1];

            if (File.Exists(fileName))
            {
                AbstractDestinationFactory destinationFactory = new DestinationFactory();
                ITranslator translator = destinationFactory.CreateSQLTranslator(AbstractDestinationFactory.Destinations.PostgreSQL11);
                using (StreamReader inputStream = new StreamReader(fileName, encoding: System.Text.Encoding.GetEncoding("iso-8859-1")))
                {
                    using (StreamWriter outputStream = new StreamWriter(File.Open(outputName, FileMode.Create), encoding: System.Text.Encoding.UTF8))
                    {
                        Console.WriteLine("Beginning translation.");
                        string line;
                        string translatedLine;
                        do
                        {
                            line = inputStream.ReadLine();
                            line = line.Replace('`', '"');

                            //Case CREATE TABLE
                            if (line.StartsWith("CREATE TABLE"))
                            {
                                List <string> bloc = new List <string> {
                                    line
                                };
                                do
                                {
                                    line = inputStream.ReadLine();
                                    line = line.Replace('`', '"');
                                    bloc.Add(line);
                                } while (!line.StartsWith(')'));
                                bloc = translator.GenerateTable(bloc);
                                foreach (string blocLine in bloc)
                                {
                                    outputStream.WriteLine(blocLine);
                                }
                            }

                            //Case INSERT INTO
                            else if (line.StartsWith("INSERT INTO"))
                            {
                                translatedLine = translator.GenerateInsert(line);
                                outputStream.WriteLine(translatedLine);
                            }

                            //Case DROP TABLE
                            else if (line.StartsWith("DROP TABLE"))
                            {
                                translatedLine = translator.GenerateDrop(line);
                                outputStream.WriteLine(translatedLine);
                            }
                        } while (!inputStream.EndOfStream);
                    }
                }
                Console.WriteLine("File written!");
            }
            else
            {
                Console.WriteLine("No file found.");
            }
        }