SQL Server中有这个脚本需要在PostgreSQL中转换。 下面是脚本:将SQL Server脚本转换为PostgreSQL
UPDATE Categories_convert SET Categories_convert.ParentID =
Categories_convert_1.CategoryID
FROM Categories_convert LEFT OUTER JOIN Categories_convert AS
Categories_convert_1 ON Categories_convert.MainGroupID_FK =
Categories_convert_1.MainGroupID
WHERE (((Categories_convert.Level)=2));
然后我试图将其转换为Postgres的。下面是该脚本:
UPDATE x_tmp_categories_convert SET orig.parentid =
cat2.categoryid
FROM x_tmp_categories_convert LEFT OUTER JOIN x_tmp_categories_convert AS
cat2 ON x_tmp_categories_convert.maingroupid_fk =
x_tmp_categories_convert.maingroupid
WHERE (((cat.level)=2));
请注意,我已经创建的表Categories_convert的SQLServer的到PostgreSQL,并更名为x_tmp_categories_convert。 postgresql中的所有字段都是小写字母。
现在的问题是,当我执行该脚本转换到PostgreSQL,就会发生错误:
ERROR: table name "x_tmp_categories_convert" specified more than once SQL state: 42712
我做错了在转换?
UPDATE:
我已经试过@a_horse_with_no_name的答案,但它并没有在所有的更新记录。字段字段仍为空。它应该基于maingoupid_fk映射该类别的所有参数。
下面是执行建议脚本后的记录快照。 由于披露原因,我选择了名称。
更新版: 我使用PHP来迁移数据,以便原谅我使用的变量。 下面是执行质疑更新脚本之前使用的2个INSERT语句:
INSERT INTO x_tmp_categories_convert(maingroupid,name,vendorid,level,parentid)
VALUES ($id,'$mainGroup',$vendorID,1,Null);
INSERT INTO x_tmp_categories_convert(subgroupid,maingroupid_fk,name,vendorid,level)
VALUES ($id,'$mainGroupId','$subGroup',$vendorID,2);
而且,这是x_tmp_categories_convert表的表定义:
CREATE TABLE x_tmp_categories_convert
(
categoryid serial NOT NULL,
parentid double precision,
name character varying(255),
level double precision,
vendorid double precision,
maingroupid integer,
subgroupid integer,
maingroupid_fk integer,
pageid integer,
subgroupid_fk integer,
CONSTRAINT code_pk PRIMARY KEY (categoryid)
)
WITH (
OIDS=FALSE
);
UPDATE V3: 已经求解由a_horse_with_no_name。谢谢
请将示例数据和表格定义添加为_formatted_文本(理想的SQL插入语句),[请不要截图](http://meta.stackoverflow.com/questions/285551/why-may-i-not上传图像的代码的时候,问一个问题/ 285557#285557) –
我已经添加了额外的信息的问题。 – ExcellenceIsLife
@a_horse_with_no_name:我已经更新了这个问题。请 – ExcellenceIsLife