我有一个大的sql转储文件...包含多个CREATE TABLE
和INSERT INTO
语句。有没有办法将这些全部加载到SQLAlchemy sqlite数据库中。我计划在创建表后使用来自sqlsoup
的内省ORM。但是,当我使用engine.execute()
方法时,它会抱怨:sqlite3.Warning: You can only execute one statement at a time.
有没有办法解决这个问题。也许用正则表达式或某种解析器拆分文件,但我不知道足够的SQL来获取正则表达式的所有情况。
非常感谢任何帮助。
威尔
编辑: 因为这看起来很重要......转储文件是用MySQL数据库创建的,所以它有很多命令/语法,sqlite3无法正确理解。
答案 0 :(得分:1)
“或某种解析器”
我发现MySQL是MySQL转储文件的一个很好的解析器:)
你自己说:“所以它有相当多的命令/语法,sqlite3无法正确理解。”显然,SQLite不是执行此任务的工具
至于你的特殊错误:没有上下文(即追溯),我无能为力。 Martelli或Skeet可能跨越时空,阅读你的翻译,但我,不是那么多。
答案 1 :(得分:0)
MySQL识别的SQL和SQLite中的SQL 相当不同。我建议单独转储每个表的数据,然后将数据加载到SQLite中的等效表中。
使用原始转储文件中给出的“CREATE TABLE”命令的子集手动在SQLite中创建表。