2 from __future__ import print_function
6 from sqlconvert.process_mysql import process_statement
7 from sqlconvert.print_tokens import print_tokens
8 from sqlconvert.process_tokens import find_error, StatementGrouper
11 def process_lines(*lines):
12 grouper = StatementGrouper(encoding='utf-8')
14 grouper.process_line(line)
15 if grouper.statements:
16 for statement in grouper.get_statements():
18 if find_error(statement):
19 print("ERRORS IN QUERY")
20 process_statement(statement)
21 print_tokens(statement, encoding='utf-8')
23 statement._pprint_tree()
25 tokens = grouper.close()
28 print_tokens(token, encoding='utf-8')
32 def process_test(_args):
34 "SELECT * FROM `mytable`; -- line-comment",
35 "INSERT into /* inline comment */ mytable VALUES (1, 'one');",
36 "/*! directive*/ INSERT INTO `MyTable` (`Id`, `Name`) "
41 def process_sql(args):
42 process_lines(*args.lines)
45 def process_file(args):
46 infile = open(args.filename, 'rt')
47 lines = infile.readlines()
52 if __name__ == '__main__':
53 main_parser = argparse.ArgumentParser(description='Group')
54 subparsers = main_parser.add_subparsers(help='Commands')
56 parser = subparsers.add_parser('sql', help='SQL from command line')
57 parser.add_argument('lines', nargs='+', help='SQL lines')
58 parser.set_defaults(func=process_sql)
60 parser = subparsers.add_parser('test', help='SQL from test data')
61 parser.set_defaults(func=process_test)
63 parser = subparsers.add_parser('file', help='SQL from a file')
64 parser.add_argument('filename', help='SQL file')
65 parser.set_defaults(func=process_file)
67 args = main_parser.parse_args()