如何将 PostgreSQL 数据库迁移到 SQLServer 数据库?

2024-03-23

我有一个 PostgreSQL 数据库,我想将其迁移到 SQL Server - 架构和数据。我很穷,所以我不想付任何钱。我也很懒,所以不想做太多工作。目前我正在逐个桌子做这个,大约有100个桌子要做。这是极其乏味的。

有什么技巧可以达到我想要的效果吗?


您应该能够在此 Serverfault 页面中接受的答案中找到一些有用的信息:https://serverfault.com/questions/65407/best-tool-to-migrate-a-postgresql-database-to-ms-sql-2005 https://serverfault.com/questions/65407/best-tool-to-migrate-a-postgresql-database-to-ms-sql-2005.

如果您可以在没有数据的情况下转换模式,则可以使用以下命令缩短数据的步骤:

pg_dump --data-only --column-inserts your_db_name > data_load_script.sql

这个负载会很慢,但是--column-insertsoption 为每行数据生成最通用的 INSERT 语句,并且应该兼容。

编辑:有关转换架构的建议如下:

我首先会转储架构,但删除与所有权或权限有关的任何内容。这应该足够了:

pg_dump --schema-only --no-owner --no-privileges your_db_name > schema_create_script.sql

编辑此文件以添加行BEGIN TRANSACTION;到开始和ROLLBACK TRANSACTION;到最后。现在您可以加载它并在 SQL Server 的查询窗口中运行它。如果出现任何错误,请确保转到文件底部,突出显示 ROLLBACK 语句并运行它(在突出显示语句时按 F5)。

基本上,您必须解决每个错误,直到脚本干净地运行为止。然后你可以改变ROLLBACK TRANSACTION to COMMIT TRANSACTION并运行最后一次。

不幸的是,我无法帮助您解决您可能会看到的错误,因为我从未从 PostgreSQL 转到 SQL Server,只有反过来。然而,我认为有些事情会成为一个问题(显然,这不是一个详尽的列表):

  • PostgreSQL 通过链接一个字段来自动递增字段NOT NULL INTEGER字段到一个SEQUENCE用一个DEFAULT。在 SQL Server 中,这是一个IDENTITY列,但它们并不完全相同。我不确定它们是否等效,但是如果您的原始架构充满了“id”字段,您可能会遇到一些麻烦。不知道SQL Server有没有CREATE SEQUENCE,因此您可能必须删除它们。
  • 数据库函数/存储过程不在 RDBMS 平台之间进行转换。您需要删除任何CREATE FUNCTION语句并手动翻译算法。
  • 请注意数据文件的编码。我是 Linux 人员,所以我不知道如何在 Windows 中验证编码,但您需要确保 SQL Server 期望的内容与您从 PostgreSQL 导入的文件相同。pg_dump有一个选项--encoding=这将让您设置特定的编码。我似乎记得 Windows 倾向于使用两字节的 UTF-16 编码来表示 Unicode,而 PostgreSQL 使用 UTF-8。由于 UTF-16 输出,我在从 SQL Server 到 PostgreSQL 时遇到了一些问题,因此值得研究。
  • PostgreSQL 数据类型TEXT简单来说就是一个VARCHAR没有最大长度。在 SQL Server 中,TEXT是......复杂(并且已弃用)。原始架构中声明为的每个字段TEXT需要检查适当的 SQL Server 数据类型。
  • SQL Server 有额外的数据类型UNICODE数据。我对它不够熟悉,无法提出建议。我只是指出这可能是一个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 PostgreSQL 数据库迁移到 SQLServer 数据库? 的相关文章

  • 打印 sqlalchemy 行

    我想做的就是打印 sqlalchemy 表行的一行 假设我有 from sqlalchemy import Column Integer String from sqlalchemy ext declarative import decla
  • 没有列名列表的tsql标识插入

    我要将一些数据从一个数据库转储到另一个数据库 我在用 set identity insert MyTable on GO INSERT INTO MyTable SELECT FROM sourceDB dbo MyTable GO set
  • 如何用NULL替换空格

    我在 sql server 2012 中有一个包含空格的列 我想用 NULL 替换这些空白 我已经编写了以下查询 但它不起作用 SELECT replace COLUMN1 NULL FROM Orders 如何实现上述功能 提前致谢 Us
  • 模拟 SQL Server 实例上的当前日期?

    是否可以更改 SQL Server 上特定数据库的日期时间 它与操作系统的日期 时间相关吗 我们希望模拟未来的日期时间以进行测试 即GETDATE 返回未来的日期 它必须处于半生产 暂存 环境中 因此不幸的是 我们无法选择更改操作系统日期
  • 根据代码版本测试和管理数据库版本

    当您开发应用程序时 数据库的更改不可避免地会出现 我发现的技巧是让数据库构建与代码保持同步 过去 我添加了一个针对目标数据库执行 SQL 脚本的构建步骤 但这很危险 因为您可能会无意中添加虚假数据或更糟的情况 我的问题是保持数据库与代码同步
  • SQL Proc 从 varchar 到 int 的“转换失败”。为什么要转换?

    我的问题是 为什么它从 varchar 转换为 int 我不确定它想做什么 CREATE PROCEDURE myTestProcedure TransId VARCHAR 15 AS BEGIN DECLARE Result VARCHA
  • Microsoft 同步框架 - 双向同步如何工作?

    我有两个客户端 A 和 B 两个客户端都有相同的同步本地数据缓存 如果客户端 A 对记录 X 进行离线编辑 然后客户端 B 也离线编辑记录 X 并与服务器同步 则当客户端 A 与服务器同步时 客户端 B 所做的更改不会反映出来 并且无论进行
  • SQL版本控制方法

    SO 有几个关于 SQL 版本控制的问题 网上有很多资源 但我找不到完全涵盖我想要做的事情的东西 首先 我在这里谈论一个方法论 我熟悉各种源代码控制应用程序 也熟悉 Red Gate 的 SQL Compare 等工具 并且我知道如何编写应
  • 如何从 SQL Server 的表中获取列名?

    我想查询一个表的所有列的名称 我发现如何做到这一点 Oracle https stackoverflow com q 452464 419956 MySQL https stackoverflow com q 193780 419956 P
  • php postgresql pdo 从标准输入复制

    COPY table name field1 field2 field3 FROM STDIN CSV 1 2 q w 3 4 a s 5 6 d 如何通过 PDO 执行此查询 Update 问题是 PDO 驱动程序将此查询作为语句执行 例
  • 非关系型数据库系统

    还有哪些其他类型的数据库系统 我最近遇到了以非关系方式处理数据的 couchDB 这让我思考其他人正在使用哪些其他模型 所以 我想知道还有哪些其他类型的数据模型 我不是在寻找任何细节 只是想看看其他人是如何处理数据存储的 我的兴趣纯粹是学术
  • Azure PostgreSQL 服务器服务排序规则创建错误

    我正在尝试将当前现有数据库导入到 Azure PostgreSQL 服务器上运行的 postgre 实例 我已经将我的azure postgresql服务器参数配置为使用UTF8编码 我不确定它是否在不重新启动的情况下应用 但即使我没有重新
  • 如何在 SQL Server 查询中的 FROM 子句中使用变量?

    我正在创建一个查询 该查询将选择表中的所有数据 查询将根据我将传递给存储过程的变量选择表 在我的例子中 如果我执行example sp table1它将选择table1 如果我使用同样的事情example table table2 应该选择
  • 单个 sql 查询可以处理 sql server 中的 null 或值日期范围

    使用 SQL Server 2008 我有一个存储过程 其中开始日期和结束日期作为日期范围的输入参数 寻找一个singlesql 查询 其中在 where 子句中有一个开始日期和结束日期 可以处理日期均为空或都有值的两种情况 我不想使用 I
  • 如何使用 Perl 从 NCBI 获取 FASTA 核苷酸格式的基因特征?

    我可以手动下载 FASTA 文件 如下所示 gt lcl CR543861 1 gene 1 ATGCTTTGGACA gt lcl CR543861 1 gene 2 GTGCGACTAAAA 通过单击 发送到 并选择 基因特征 FAST
  • 为什么 Excel 有时会在工作表名称中添加 $?

    我有时但并非总是发现 Excel 会放置一个 位于工作表名称末尾 但在 Excel 中看不到 只有在尝试使用 C 将其导入 SQL Server 时才可见 我遇到过很多不同的情况 它保留了原始工作表 但也创建了第二个空的 隐藏 工作表 其中
  • SQL Server 全文搜索 - 是否可以在单词中间进行搜索?

    我的数据库有全文搜索 是否可以在单词中间搜索某些文本 例如 我有一个描述列 其中包含以下文本 Revolution 是否可以搜索 EVO 并让它在 革命 一词中找到它 或者我是否一直在做 LIKE SELECT FROM Table WHE
  • Sql 查询抛出标识符太长。最大长度为 128

    我正在处理一个简单的更新查询 在执行查询时看到以下错误 我非常清楚 这根本不应该是一个长度问题 可能是什么问题 Error 以identifier开头的标识符太长 最大长度为 128 我的查询 update dbo DataSettings
  • 用户非超级管理员和大对象的 pg_dump

    我与非超级管理员的用户开始了导出数据库的长期职业生涯 但我发现了一个问题 在新版本的postgresql中只有超级管理员才能访问大对象 ERROR permission denied for large object 5141 没有办法做到
  • 如何在 where 子句中使用别名? [复制]

    这个问题在这里已经有答案了 可能的重复 在 WHERE 子句中引用列别名 https stackoverflow com questions 8370114 referring to a column alias in a where cl

随机推荐

  • UIWebView - 如何禁用操作表 (UIActionSheet)?

    我想知道如何禁用 UIActionSheets 特别是点击并按住 UIWebView 中的超链接后显示的操作表 这些似乎在 UIWebViews 中默认启用 其中包含警报标题中相应链接的链接地址 它们也在 Safari 中启用 如何 是否可
  • 画圆圈:将代码分成类

    我正在尝试用随机颜色和随机直径绘制圆圈mousePressed事件 但当我尝试稍微组织我的代码 将我的代码分成类 时 我遇到了一些问题 控制器类 public class Controller implements MouseListene
  • Webpack SCSS 图像 URL 链接在嵌套路由上损坏

    这是我的目录结构 public src app js assets images logo b green png stylesheets nav scss And webpack config js module exports entr
  • 使用curl NuGet无法解析的外部符号

    环境 微软视觉工作室 2017NuGet 包管理器C 项目 工作流程 我使用 NuGet 添加了curl 我尝试编译我的项目 它抛出 8 个链接器错误 无法解析的外部符号 项目结构 root gt packages gt curl 7 30
  • for循环中的setTimeout不打印连续值[重复]

    这个问题在这里已经有答案了 我有这个脚本 for var i 1 i lt 2 i setTimeout function alert i 100 But 3两次都会收到警报 而不是1 then 2 有没有办法通过i 而不将函数写为字符串
  • repo 同步命令的替代方案是什么?

    我是 git 新手 我想在完成后手动执行清单文件repo init 而不是做repo sync 测量正常 git 命令和repo sync在不同的情况下 但我不确定 repo 使用哪个 git 命令 我知道repo只是大型代码库的 git
  • 寻找返回黑盒模型最大输出的最佳输入组合

    在我的工作中将人工神经网络应用于回归任务时 我面临的挑战之一是 为了找到给定输入范围的最佳结果 我必须将多维网格输入到我的模型中 然后简单地选择最高的价值 然而 这总体上是一个计算成本非常高的解决方案 下面的文字长度可能会令人恐惧 但这只是
  • 在数据框或向量中查找非数字数据

    我读了一些冗长的数据read csv 令我惊讶的是 数据是以因子而不是数字的形式出现的 所以我猜测数据中必须至少有一个非数字项 我怎样才能找到这些物品的位置 例如 如果我有以下数据框 df lt data frame c 1 2 3 4 f
  • Django 在 save() 中获取对象的 ID

    我有一些固定的数字 可以说是num 1000现在我的字段需要是 object id 和 num 的总和 我需要在 save 中使用它 如下所示 def save self args kwargs num 1000 self special
  • 将单个数组分成两个数组的代码是怎样的?

    当我使用所需 URL 的 JSON 解析时 我在 nsarray 中得到以下响应 但在这里我不喜欢得到 2 1 4 4 6 5 8 7 10 9 12 和 11在单个数组中 我必须获得两个数组的总响应 我的意思是一个数组集将包含 2 4 6
  • 如何从Javascript数组中删除“[”和“]”符号

    我在用着react js用于构建我的仪表板 我想转换这样的数组 旧版本 进入这个 新版本 in javascript 所以我可以将新版本的数组放入 JSON 数组中 如下所示 newArray 我认识一个map函数返回一个数组 我知道这是一
  • 无法在 git bash 中使用命令 telnet

    我尝试使用命令telnet在 Git Bash 中 但它显示此错误 bash telnet 未找到命令 我的操作系统是 Windows 10 如有任何想法 我们将不胜感激 那是因为 git 没有提供 telnet 在 Windows 中 您
  • 我可以用一份许可证在两台机器上安装 VS 吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是一名兼职教授 教授数据库和编程课程 我拥有一台运行 Windows 的台式机和笔记本电脑 我拥有 VS 2010 的学术版 并在家中安
  • Apollo 客户端从缓存中删除 Item

    我正在使用带有 React 的 Apollo 客户端 我用许多不同的变量查询帖子 所以我在不同的 缓存 中有一篇文章 现在我想删除一个帖子 所以我需要从所有 缓存 中删除这个特定的帖子 const client new ApolloClie
  • 如何在Xcode编译中集成.proto文件?

    我正在尝试将 Android 应用程序移植到 ios 和 mac xcode 生态系统 我的应用程序使用 Google proto buffs 并使用说明https github com alexeyxo protobuf swift bl
  • 使用 Intellij 在远程服务器上部署/调试 Java 代码

    我想在远程服务器上运行我的java代码以获得更快的速度 该服务器非常强大 我想要的是将我的 Intellij 连接到该远程服务器并运行我的代码 但我仍然想在我的本地计算机 即我的笔记本电脑 上使用 IntelliJ 我在 IntelliJ
  • jQuery 的 space 和 > 选择器有什么区别?

    两者有什么区别space http docs jquery com Selectors descendant ancestordescendant and gt http docs jquery com Selectors child选择器
  • 如何通过文件将参数传递给tortoiseproc.exe?

    我正在使用 java 中的 Runtime getRuntime exec 以编程方式生成要提交到 cmd exe 的命令 该命令是tortoiseproc忽略形式的命令 tortoiseproc command ignore path f
  • 在 Python 3 中创建抽象属性会导致 AttributeError

    如何在 python 中创建抽象属性 import abc class MyClass abc ABC abc abstractmethod property def foo self pass 结果出现错误AttributeError a
  • 如何将 PostgreSQL 数据库迁移到 SQLServer 数据库?

    我有一个 PostgreSQL 数据库 我想将其迁移到 SQL Server 架构和数据 我很穷 所以我不想付任何钱 我也很懒 所以不想做太多工作 目前我正在逐个桌子做这个 大约有100个桌子要做 这是极其乏味的 有什么技巧可以达到我想要的