]> git.phdru.name Git - sqlconvert.git/blobdiff - scripts/print_subtree_from_cl.py
Add a demo script that prints queries from a file
[sqlconvert.git] / scripts / print_subtree_from_cl.py
diff --git a/scripts/print_subtree_from_cl.py b/scripts/print_subtree_from_cl.py
new file mode 100755 (executable)
index 0000000..76ac675
--- /dev/null
@@ -0,0 +1,48 @@
+#! /usr/bin/env python
+from __future__ import print_function
+
+import sys
+from sqlparse import parse
+from mysql2sql.print_tokens import print_tokens
+from mysql2sql.process_tokens import requote_names, find_error
+
+
+def test():
+    for query in (
+        "SELECT * FROM `mytable`; -- line-comment",
+        "INSERT into /* inline comment */ mytable VALUES (1, 'one')",
+        "/*! directive*/ INSERT INTO `MyTable` (`Id`, `Name`) "
+        "VALUES (1, 'one')"
+    ):
+        for parsed in parse(query):
+            print("----------")
+            if find_error(parsed):
+                print("ERRORS IN QUERY")
+            requote_names(parsed)
+            print_tokens(parsed)
+            print()
+            parsed._pprint_tree()
+    print("----------")
+
+
+def main(*queries):
+    for query in queries:
+        for parsed in parse(query):
+            print("----------")
+            if find_error(parsed):
+                print("ERRORS IN QUERY")
+            requote_names(parsed)
+            print_tokens(parsed)
+            print()
+            parsed._pprint_tree()
+        print("----------")
+
+if __name__ == '__main__':
+    if len(sys.argv) <= 1:
+        sys.exit("Usage: %s [-t | sql_query_string [; sql_query_string ...]]" %
+                 sys.argv[0])
+    if sys.argv[1] == '-t':
+        test()
+    else:
+        queries = sys.argv[1:]
+        main(*queries)