2 from __future__ import print_function
5 from sqlparse import parse
6 from sqlconvert.print_tokens import print_tokens
7 from sqlconvert.process_tokens import find_error
10 def parse_queries(*queries):
12 for parsed in parse(query, encoding='utf-8'):
14 if find_error(parsed):
15 print("ERRORS IN QUERY")
16 print_tokens(parsed, encoding='utf-8')
22 def parse_test(_args):
24 "SELECT * FROM `mytable`; -- line-comment",
25 "INSERT into /* inline comment */ mytable VALUES (1, 'one')",
26 "/*! directive*/ INSERT INTO `MyTable` (`Id`, `Name`) "
32 parse_queries(*args.lines)
36 infile = open(args.filename, 'rt')
37 lines = infile.readlines()
42 if __name__ == '__main__':
43 main_parser = argparse.ArgumentParser(description='Parse')
44 subparsers = main_parser.add_subparsers(help='Commands')
46 parser = subparsers.add_parser('sql', help='SQL from command line')
47 parser.add_argument('lines', nargs='+', help='SQL lines')
48 parser.set_defaults(func=parse_sql)
50 parser = subparsers.add_parser('test', help='SQL from test data')
51 parser.set_defaults(func=parse_test)
53 parser = subparsers.add_parser('file', help='SQL from a file')
54 parser.add_argument('filename', help='SQL file')
55 parser.set_defaults(func=parse_file)
57 args = main_parser.parse_args()