2 from __future__ import print_function
8 from mysql2sql.print_tokens import print_tokens
9 from mysql2sql.process_tokens import requote_names, StatementGrouper
11 from m_lib.defenc import default_encoding
14 def main(infile, encoding, outfile, output_encoding):
15 grouper = StatementGrouper(encoding=encoding)
17 grouper.process_line(line)
18 if grouper.statements:
19 for statement in grouper.get_statements():
20 requote_names(statement)
21 print_tokens(statement, outfile=outfile,
22 encoding=output_encoding)
23 tokens = grouper.close()
26 print_tokens(token, outfile=outfile, encoding=output_encoding)
29 if __name__ == '__main__':
30 parser = argparse.ArgumentParser(description='Convert MySQL to SQL')
31 parser.add_argument('-e', '--encoding', default='utf-8',
32 help='input/output encoding, default is utf-8')
33 parser.add_argument('-E', '--output-encoding',
34 help='separate output encoding, default is the same '
35 'as -e except for console; for console output '
36 'charset from the current locale is used')
37 parser.add_argument('-o', '--outfile', help='output file name')
38 parser.add_argument('infile', help='input file name')
39 parser.add_argument('output_file', nargs='?', help='output file name')
40 args = parser.parse_args()
43 if args.infile == '-':
46 infile = open(args.infile, 'rt', encoding=args.encoding)
51 print("Error: cannot read from console", file=sys.stderr)
57 print("Error: too many output files", file=sys.stderr)
61 outfile = args.outfile
63 elif args.output_file:
64 outfile = args.output_file
69 if args.output_encoding:
70 output_encoding = args.output_encoding
72 output_encoding = default_encoding
74 output_encoding = args.encoding
80 outfile = open(outfile, 'wt', encoding=output_encoding)
82 if infile is not sys.stdin:
86 main(infile, args.encoding, outfile, output_encoding)