我有一个PostgreSQL数据库。我要将此PostgreSQL数据库导出到MS SQL Server数据库。
为此,我首先使用以下命令备份schema-only的PostgreSQL数据库,并将其恢复到SQL Server数据库中。我只是在SQL Server中将timestamp without time zone类型替换为datetime。
/opt/netiq/idm/apps/postgresql/bin/pg_dump -U admin --schema-only --no-owner --no-privileges testdata > /home/testdata.sql然后尝试还原SQL Server数据库表中的PostgreSQL数据库数据。我使用以下命令备份PostgreSQL数据库数据
/opt/netiq/idm/apps/postgresql/bin/pg_dump -U admin --data-only --column-inserts testdata > /home/testdata.sql当我尝试从上面的转储中恢复数据时,我得到了以下错误
Conversion failed when converting date and/or time from character string在以下查询中
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中与以下查询相当的是什么。
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
发布于 2017-10-24 22:20:43
从提到我正在使用的文档开始:
https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql
(删除了insert语句的信息,注释表明该语句不正确)
更改表
来自ms sql文档的示例:
ALTER TABLE Person.ContactBackup ADD CONSTRAINT FK_ContactBacup_Contact FOREIGN KEY (ContactID) REFERENCES Person.Person (BusinessEntityID) ;从列表中选择的查询:
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,它们可以是CLUSTERED或UNCLUSTERED
例如:CREATE UNIQUE CLUSTERED INDEX Idx1 ON t1(c);
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-index-transact-sql
希望这能有所帮助。
https://stackoverflow.com/questions/46911663
复制相似问题