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