如何将 SQLite SQL 转储文件转换为 PostgreSQL?

2023-11-25

对于开发,我使用 SQLite 数据库并在 PostgreSQL 中进行生产。我用数据更新了本地数据库,并且需要将特定表传输到生产数据库。

Running sqlite database .dump > /the/path/to/sqlite-dumpfile.sql,SQLite 按以下格式输出表转储:

BEGIN TRANSACTION;
CREATE TABLE "courses_school" ("id" integer PRIMARY KEY, "department_count" integer NOT NULL DEFAULT 0, "the_id" integer UNIQUE, "school_name" varchar(150), "slug" varchar(50));
INSERT INTO "courses_school" VALUES(1,168,213,'TEST Name A',NULL);
INSERT INTO "courses_school" VALUES(2,0,656,'TEST Name B',NULL);
....
COMMIT;

如何将其转换为可导入到生产服务器中的 PostgreSQL 兼容转储文件?


您应该能够将该转储文件直接输入psql:

/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql

如果你想要id列更改为“自动增量”,然后在表创建行中将其类型从“int”更改为“serial”。然后 PostgreSQL 会将一个序列附加到该列,以便具有 NULL id 的 INSERT 将自动分配下一个可用值。 PostgreSQL 也不会识别AUTOINCREMENT命令,因此需要删除这些命令。

您还需要检查datetimeSQLite 模式中的列并将它们更改为timestamp对于 PostgreSQL。 (谢谢Clay指出这一点。)

如果你的 SQLite 中有布尔值,那么你可以转换1 and 0 to 1::boolean and 0::boolean(分别)或者您可以在转储的模式部分中将布尔列更改为整数,然后在导入后在 PostgreSQL 中手动修复它们。

如果 SQLite 中有 BLOB,那么您需要调整要使用的架构bytea。你可能需要混合一些decode也打电话。如果您需要处理大量 BLOB,那么用您最喜欢的语言编写一个快速的复制程序可能比修改 SQL 更容易。

像往常一样,如果您有外键,那么您可能需要查看set constraints all deferred为了避免插入顺序问题,请将命令放置在 BEGIN/COMMIT 对内。

谢谢尼古拉斯·赖利对于布尔值、blob 和约束注释。

如果你有`在您的代码中,如某些 SQLite3 客户端生成的,您需要删除它们。

PostGRESQL 也无法识别unsigned列,因此您可能需要删除该列或添加自定义约束,如下所示:

CREATE TABLE tablename (
    ...
    unsigned_column_name integer CHECK (unsigned_column_name > 0)
);

虽然 SQLite 默认为 null 值'', PostgreSQL 要求将它们设置为NULL.

SQLite 转储文件中的语法似乎与 PostgreSQL 大部分兼容,因此您可以修补一些内容并将其提供给psql。通过 SQL INSERT 导入大量数据可能需要一段时间,但它会起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 SQLite SQL 转储文件转换为 PostgreSQL? 的相关文章

  • 在同一个表上组合两个 SQL SELECT 语句

    我想结合这两个 SQL 查询 SELECT FROM Contracts WHERE productType RINsell AND clearTime IS NULL AND holdTime IS NOT NULL ORDER BY g
  • sqlite 增量真空仅删除一个空闲页面

    我已将 sqlite 数据库的 auto vacuum PRAGMA 值更改为 INCRMENTAL 当我跑步时PRAGMA incremental vacuum 通过 DB Browser for SQlite 应用程序 它释放了free
  • 如何在我的 iOS 项目中添加和执行 .sql 文件?

    我找到了很多关于在 iOS 中使用 SQLite 数据库的教程 但没有找到任何直接引用 sql 文件的内容 谁能告诉我如何将现有的 SQL 数据库链接到我的应用程序 编辑 这是一个 MySQL 转储 我们有一个基于浏览器的抽认卡程序 现在我
  • POSTGRESQL:如何在现有表上添加包含数据的新列

    我是 postgres 和 sql 脚本的新手 所以请耐心等待 我想要做的是在现有表上添加包含数据的现有列 现有表的示例 NAME AGE Adam 25 Tim 30 现在我想添加一个新列 ADDRESS 其中包含 Adam 和 Tim
  • pq:无法调整共享内存段的大小。设备上没有剩余空间

    我在仪表板上有许多面板 数量约为 6 个 用于显示数据点图表 对 PostgreSQL 数据库的 Dockerized 实例进行查询 直到最近 面板都工作正常 有些面板停止工作并报告如下错误 pq 无法将共享内存段 PostgreSQL 2
  • SQLite:如何命名“值”子选择中的列

    在 postgres 中我可以说 test select from values 1 3 7 as foo id id 1 3 7 3 rows 这意味着这样的子选择随后可以使用 foo id 等与其他表连接 在 sqlite 中我可以说
  • 如何在数据库中存储年月?

    是否有在数据库中存储年份和月份的标准方法 我需要根据月份和年份制作一些报告 我无法使用日期和函数实时提取月份 因为表很大 所以我需要预处理 我会和 Michael 的建议是什么 https stackoverflow com a 81694
  • 如何避免应用程序停止后 docker 容器停止

    有一个带有 Postgres 服务器的 docker 容器 postgres 停止或崩溃 无关紧要 我需要检查一些环境变量和一些文件的状态 默认情况下 容器在应用程序完成后停止 我知道有一个选项可以更改 dockerfile 中的默认行为
  • 多租户 Rails 应用:不同技术的优缺点是什么?

    我最初是为一位客户编写 Ruby on Rails 应用程序的 现在 我正在更改它 以便它可以用于不同的客户 我的最终目标是某些用户 不是我 可以单击按钮并创建一个新项目 然后生成所有必要的更改 新架构 新表 代码处理 无需任何人需要我编辑
  • 如何在android中批量插入sqlite

    我正在使用 SQLiteOpenHelper 进行数据插入 我需要插入2500个id和2500个名字 所以花费了太多时间 请任何人帮助我如何减少插入时间 我们可以一次插入多条记录吗 任何人都可以帮助我 先感谢您 代码 public clas
  • cv2.imdecode 始终返回 None

    我正在从存储 JPEG 图像的 sqlite BLOB 读取二进制数据 sqlite3 Binary 图像被写入数据库 img cv2 imread images image jpg c execute INSERT INTO pictur
  • 如何在sqlite中添加特定数量的空行?

    我有一个SQLite文件 我想添加2550 empty NULL rows 我可以使用此代码添加一个空行 INSERT INTO my table DEFAULT VALUES 但我需要 2550 行 有什么捷径吗 我不想执行相同的代码 2
  • 多级排序

    我有一个表 其中包含一些记录 其中包含名称 评级等字段 我首先想要根据评级将结果限制为 20 进行排序 然后在此结果集上想要进一步应用基于名称的排序 我知道要排序我们需要使用像这样的查询 Select from table order by
  • 如何在postgres中获取数组大小大于1的数组

    我有一个看起来像这样的表 val fkey num 1 1 1 1 2 1 1 3 1 2 3 1 我想要做的是返回一组行 其中值按 val 分组 并带有一个 fkey 数组 但仅限于 fkey 数组大于 1 的情况 因此 在上面的示例中
  • 将一个大的 postgres 表拆分为多个 csv

    我正在使用以下 psql 查询连接到远程主机并将一个大表拆分为多个 csv 文件 psql h xx p xx U xx d xx c COPY select from table TO program split lines 1000 f
  • SqlAlchemy:查询具有数组的长度json字段

    我有一个包含 JSON 类型字段的表 JSON 字段包含一个带有数组的 JSON 对象 如何查询该数组每一行的长度 class Post Base tablename posts id Column Integer primary key
  • Heroku 上的“PG::错误 - 数字字段溢出”

    我构建了一个应用程序来查询 Google Analytics 的过去 7 天的数据 一切都在本地进行 在 Heroku 上 该过程运行顺利 直到它尝试获取今天日期的数据 然后我收到以下错误 2012 10 29T02 32 02 00 00
  • 了解 FTS3/FTS4:什么是虚拟表并从中搜索具有可搜索的非虚拟表?

    阅读 SQLite3 的 FTS3 FTS4 文档的第一部分后 我现在感到非常困惑 我感到困惑的原因是散布在网络上的示例 我相信它没有涵盖所有可能的用例 另一个原因是我目前所处的情况 话虽如此 我有一个名为 Note 的表 其中包含两个类型
  • QGIS 和 PostGIS(地图点(美国地图上的纬度和经度以及半径)

    我安装了QGIS和PostGIS 我想在美国地图上以 100 英里为半径显示 200 个点 我已将纬度和经度导入 PostGIS 数据库中 所以我有三个字段 地址 纬度 经度 1 我需要将纬度和经度字段转换为点或几何字段吗 如果是这样怎么办
  • ListView 和 CursorAdapter 对于大量数据的性能问题

    我在 sqlite 表中有大约 4k 行 表有 7 列 我用自己的 CursorAdapter 创建了工作 ListView 查询是这样的SELECT FROM table ORDER BY column DESC 表有第一列 id INT

随机推荐

  • REST 集合,好的做法:GET api/CollectionS//Collection?

    我需要能够基于对象集合来获取集合 为此 我正在考虑几种方法 但不确定哪一种最有意义 所以我将两种方法都发布 如果有我可能没有考虑过的更好的方法 请随时发表您的建议 例如 我将使用产品和评论 即产品评论 作为资源 客观的 我们希望获得所有产品
  • 无法将类型“string”隐式转换为“bool”[重复]

    这个问题在这里已经有答案了 可能的重复 帮助转换类型 无法将类型 string 隐式转换为 bool 我有这个代码 private double Price private bool Food private int count priva
  • Java ldap认证问题

    我试图让我的自定义 java 应用程序使用我们的 Active Directory 服务器进行身份验证 但由于某种原因我无法让它工作 谁能明白这是为什么吗 下面是我的方法 private boolean authenticate Strin
  • Activity 或 Fragment 哪种使用方式性能和可靠性更好? [复制]

    这个问题在这里已经有答案了 我是 Android 新手 我正在开发一个 Android 应用程序 现在正在启动 它是一种可保存的具有特定日期 时间的用户输入信息 并向用户回顾以前存储的数据 并且还存储一些设置信息 这可能看起来很简单 但会花
  • 像“typedef int (f)(void)”这样带括号的 typedef 是什么意思?它是函数原型吗?

    typedef int fc name void Here fc name是任何有效的 C 符号 这与函数指针有什么不同typedef It s a typedef到一个函数类型 目的是将其用于函数指针 但在本例中使用它的语法是 int b
  • 尝试使用 NDK 构建适用于 Android 的 PocketSphinx 时出现问题

    我正在尝试使用 PocketSphinxAndroidDemo 项目构建 Android 版 PocketSphinx 我已经放弃了使用 Cygwin 和 Windows 构建它的追求 并安装了 Ubuntu VM 我正在取得进展 但我似乎
  • 针对不同环境进行 web.config 转换时出错

    我试图将我的应用程序部署到不同的环境中 然后我开始遵循以下方法 使用 Visual Studio 或 Visual Web Developer 将 ASP NET Web 应用程序部署到托管提供商 Web Config 文件转换 3 of
  • 使用 Bigquery(标准 SQL)获取每组分组结果的前 n 条记录

    我见过这个问题 这几乎正是我想要的 但我无法使用标准 SQL 在 Bigquery 上运行它 因为 BQ 不允许用户定义变量 Note 我有任意数量的组 所以UNION按照链接问题中的第一个答案来处理所有这些是不可行的 以下是最简单的示例
  • 两个具有相同函数名的jquery插件之间的冲突

    我正在一个大型网站工作 该网站有两个相互冲突的 jquery 插件用于执行自动完成 1 jquery autocomplete js 不是jquery ui的一部分 它的作用是 fn extend autocomplete function
  • 从特定父级获取 WordPress 子类别

    我正在构建一个小型缩略图库 其中包含 ID 为 406 的类别中的帖子 有些帖子属于多个类别 我不确定如何获取 406 的子类别名称 post cat 0 gt name 返回一个类别 但我只需要它来返回 406 的子级 thumbnail
  • 捕获 Ruby 方法中的变量

    在咖啡脚本中 f gt v 5 g gt v g f returns 5 as expected In Ruby def f v 5 def g v undefined local variable or method v for main
  • MySQL 基准测试

    我正在尝试使用 MySQL 基准测试来测试一些查询 但是 我遇到了错误 SELECT benchmark 10000 select title from user 作为回报我得到这个错误 ERROR 1242 21000 Subquery
  • 析构函数中是否需要删除?

    我有以下代码 我想知道是否如此delete b这里有必要吗 我的操作系统会自动清除分配的内存区域吗 class A B b A b new B A delete b 非常感谢 是的 你必须delete使用创建的每个对象new 你拥有的 在这
  • 如何使用 Spring Boot 通过 Outlook 发送邮件?

    我的 application properties 文件包含以下配置 spring mail properties mail smtp connecttimeout 5000 spring mail properties mail smtp
  • 为对话框创建阴影

    我想为我的自定义对话框创建阴影 这可能吗 GhazalActivity public void viewShareMenu Dialog share new Dialog this R style shareDialogStyle shar
  • 实体框架代码优先 IQueryable

    我正在使用实体框架代码优先 但遇到了一个小障碍 我有一个类 Person 定义如下 public class Person public Guid Id get set public virtual ICollection
  • Android Facebook Api 异常 - Remote_app_id 与存储的 id 不匹配

    我有一个问题 如本文标题所示 我无法登录 SessionState currentstate session getState 给我一个状态CLOSED LOGIN FAILED 我看了这个帖子 Android Facebook SDK 3
  • Windows 批量检查变量是否以特定字符串开头、结尾并包含特定字符串

    我正在尝试检查批处理文件中的变量是否以 包含BETA某处并结束于 是否可以 如果是的话 有人可以帮我吗 假设您的变量不包含任何换行符或回车符 那么所需要的只是一个 FINDSTR 命令 它具有有限的正则表达式支持 足以解决这个问题 echo
  • data.table 设置 key 时如何对字符串进行排序

    昨天我不得不花一些时间试图找到我的代码中的错误 我发现data tablepackage 对字符串的排序方式与 base 略有不同 这是正常行为吗 最有效的方法是什么 其优点是data table 重现使用碱基获得的结果order功能 这是
  • 如何将 SQLite SQL 转储文件转换为 PostgreSQL?

    对于开发 我使用 SQLite 数据库并在 PostgreSQL 中进行生产 我用数据更新了本地数据库 并且需要将特定表传输到生产数据库 Running sqlite database dump gt the path to sqlite