首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MS SQL Server中的PostgreSQL查询等效项

MS SQL Server中的PostgreSQL查询等效项
EN

Stack Overflow用户
提问于 2017-10-24 21:19:34
回答 1查看 1.1K关注 0票数 1

我有一个PostgreSQL数据库。我要将此PostgreSQL数据库导出到MS SQL Server数据库。

为此,我首先使用以下命令备份schema-only的PostgreSQL数据库,并将其恢复到SQL Server数据库中。我只是在SQL Server中将timestamp without time zone类型替换为datetime

代码语言:javascript
复制
/opt/netiq/idm/apps/postgresql/bin/pg_dump -U admin --schema-only --no-owner --no-privileges testdata > /home/testdata.sql

然后尝试还原SQL Server数据库表中的PostgreSQL数据库数据。我使用以下命令备份PostgreSQL数据库数据

代码语言:javascript
复制
/opt/netiq/idm/apps/postgresql/bin/pg_dump -U admin --data-only --column-inserts testdata > /home/testdata.sql

当我尝试从上面的转储中恢复数据时,我得到了以下错误

代码语言:javascript
复制
Conversion failed when converting date and/or time from character string

在以下查询中

代码语言:javascript
复制
INSERT INTO databasechangelog (id, author, filename, dateexecuted, orderexecuted, exectype, md5sum, description, comments, tag, liquibase) VALUES ('3600', 'IDMRBPM', 'DbRenameTables.xml', '2017-09-06 00:36:31.985959+05:30', 83, 'MARK_RAN', '7:d83f1247d179d535dadf892528470df9', 'renameTable', 'Renaming PORTALREGISTRY to PORTALREGISTRY_ORIG', NULL, '3.1.1');

所以请帮我解决这个问题。

我有一些PostgreSQL数据库的以下查询,我想知道在MS SQL Server中与以下查询相当的是什么。

代码语言:javascript
复制
ALTER TABLE ONLY configuration_item ALTER COLUMN id SET DEFAULT nextval('configuration_item_id_seq'::regclass);
ALTER TABLE ONLY securityaccessrights ADD CONSTRAINT accrts_eliid_uk UNIQUE (fwelementiid, permissionid);
ALTER TABLE ONLY portalportlethandles ADD CONSTRAINT portlethandles_pk PRIMARY KEY (portletiid);
CREATE INDEX afcomment_messageid_idx ON afcomment USING btree (messageid);
ALTER TABLE ONLY afactivity ADD CONSTRAINT fk_activity_proc FOREIGN KEY (requestid) REFERENCES afprocess(requestid) ON DELETE CASCADE;
ALTER TABLE ONLY ui_item ADD CONSTRAINT fk_uiitem_citem FOREIGN KEY (id) REFERENCES configuration_item(id);

我使用的是MS SQL Server 2014 - 12.0.4100.1 (X64)PostgreSQL 9.3.4

EN

回答 1

Stack Overflow用户

发布于 2017-10-24 22:20:43

从提到我正在使用的文档开始:

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql

(删除了insert语句的信息,注释表明该语句不正确)

更改表

来自ms sql文档的示例:

代码语言:javascript
复制
ALTER TABLE Person.ContactBackup ADD CONSTRAINT FK_ContactBacup_Contact FOREIGN KEY (ContactID) REFERENCES Person.Person (BusinessEntityID) ;

从列表中选择的查询:

代码语言:javascript
复制
ALTER TABLE ONLY ui_item ADD CONSTRAINT fk_uiitem_citem FOREIGN KEY (id) REFERENCES configuration_item(id);

如果您从命令中删除ONLY,则应该没有问题,postgres和MS中都隐含了这一点。

如果您有缺省值,请使用DEFAULT代替SET DEFAULT

添加索引时,对于MS SQL,它们可以是CLUSTEREDUNCLUSTERED

例如:CREATE UNIQUE CLUSTERED INDEX Idx1 ON t1(c);

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-index-transact-sql

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46911663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档