如何让 Sqlite Studio 以正确的顺序导出到包含表的 SQL 文件?
How can I get SqlLiteStudio to export to SQL file with tables in the correct order?
我有一个关系型 SQLite 数据库,其中 tables 通过外键相互访问。当我使用 SqlLiteStudio“导出”输出到新的 SQL 文件时,它会根据 table 名称的字母顺序写出 SQL“CREATE”和“INSERT INTO”语句。然后,当我将相同的 SQL 文件导入新数据库时(这需要使用命令“从文件执行 SQL”,因为导入命令似乎只将 csv 导入 table ),我收到“没有这样的 table”错误,因为尚未读取创建被引用的 table 的行。因此,如果我编辑 SQL 文件以将 table 放在顶部,则会收到“FOREIGN KEY constraint failed”错误。那么如果我将 SQL 文件编辑到 table 创作下方的所有 tables 插入操作,并按 table 重新排序插入,这样就没有 table在其 table 依赖项之前,只有这样我才能成功导入 SQL 文件,再现原始的 SQLite 数据库文件。似乎是 SqlLiteStudio 中的错误。我想更糟糕的情况是我可以编写一个 post-processing 脚本,但我希望了解人们是否正在使用一些更好的方法。我只是更喜欢以文本格式保存以备份到现有的 git 存储库中,并使以后的数据库迁移更容易。 TIA.
您可以在导入前关闭外键支持,然后在导入后使用
重新打开
PRAGMA foreign_keys = off;
....
PRAGMA foreign_keys = on;
我有一个关系型 SQLite 数据库,其中 tables 通过外键相互访问。当我使用 SqlLiteStudio“导出”输出到新的 SQL 文件时,它会根据 table 名称的字母顺序写出 SQL“CREATE”和“INSERT INTO”语句。然后,当我将相同的 SQL 文件导入新数据库时(这需要使用命令“从文件执行 SQL”,因为导入命令似乎只将 csv 导入 table ),我收到“没有这样的 table”错误,因为尚未读取创建被引用的 table 的行。因此,如果我编辑 SQL 文件以将 table 放在顶部,则会收到“FOREIGN KEY constraint failed”错误。那么如果我将 SQL 文件编辑到 table 创作下方的所有 tables 插入操作,并按 table 重新排序插入,这样就没有 table在其 table 依赖项之前,只有这样我才能成功导入 SQL 文件,再现原始的 SQLite 数据库文件。似乎是 SqlLiteStudio 中的错误。我想更糟糕的情况是我可以编写一个 post-processing 脚本,但我希望了解人们是否正在使用一些更好的方法。我只是更喜欢以文本格式保存以备份到现有的 git 存储库中,并使以后的数据库迁移更容易。 TIA.
您可以在导入前关闭外键支持,然后在导入后使用
重新打开PRAGMA foreign_keys = off;
....
PRAGMA foreign_keys = on;