Hut*_*ut8 49 database sql-server migration postgresql
我有一个PostgreSQL数据库,我想转移到SQL Server - 架构和数据.我很穷,所以我不想付钱.我也很懒,所以我不想做很多工作.目前我正在按表格进行此表,并且有大约100个表要做.这非常乏味.
是否有某种技巧可以满足我的需求?
Mat*_*ood 51
您应该能够在此Serverfault页面中的已接受答案中找到一些有用的信息: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
Run Code Online (Sandbox Code Playgroud)
此加载速度非常慢,但该--column-inserts选项会为每行数据生成最通用的INSERT语句,并且应该是兼容的.
编辑:有关转换架构的建议如下:
我将首先转储模式,但删除任何与所有权或权限有关的内容.这应该足够了:
pg_dump --schema-only --no-owner --no-privileges your_db_name > schema_create_script.sql
Run Code Online (Sandbox Code Playgroud)
编辑此文件以将行添加BEGIN TRANSACTION;到开头和ROLLBACK TRANSACTION;结尾.现在,您可以加载它并在SQL Server的查询窗口中运行它.如果出现任何错误,请确保转到文件的底部,突出显示ROLLBACK语句并运行它(通过在突出显示语句时按F5).
基本上,您必须解决每个错误,直到脚本干净地运行.然后你可以改变ROLLBACK TRANSACTIONto COMMIT TRANSACTION并运行最后一次.
不幸的是,我无法帮助您看到哪些错误,因为我从未从PostgreSQL转到SQL Server,只是反过来.然而,有些事情我会期望成为一个问题(显然,不是一个详尽的清单):
NOT NULL INTEGER到SEQUENCE使用a 来自动增加字段DEFAULT.在SQL Server中,这是一个IDENTITY列,但它们并不完全相同.我不确定它们是否相同,但如果你的原始模式充满了"id"字段,那么你可能会遇到麻烦.我不知道SQL Server是否有CREATE SEQUENCE,所以你可能不得不删除它们.CREATE FUNCTION语句并手动翻译算法.pg_dump有一个选项--encoding=,可以让您设置特定的编码.我似乎记得Windows倾向于对Unicode使用两字节UTF-16编码,其中PostgreSQL使用UTF-8.由于UTF-16输出,我从SQL Server到PostgreSQL有一些问题所以值得研究.TEXT只是VARCHAR没有最大长度.在SQL Server中,TEXT是......复杂(并且已弃用).声明为原始模式中的每个字段TEXT都需要针对相应的SQL Server数据类型进行检查.UNICODE.我不太熟悉它提出建议.我只是指出这可能是一个问题.| 归档时间: |
|
| 查看次数: |
53757 次 |
| 最近记录: |