ALTER TABLE IF EXISTS fias_AddressObjects DROP CONSTRAINT IF EXISTS fk_fias_AddressObjects_AddressObjects_PREVID; ALTER TABLE IF EXISTS fias_AddressObjects DROP CONSTRAINT IF EXISTS fk_fias_AddressObjects_AddressObjects_NEXTID.
UPDATE fias_AddressObjects ao SET NEXTID=NULL WHERE ao.NEXTID IS NOT NULL AND NOT EXISTS(SELECT * FROM fias_AddressObjects nao WHERE nao.AOID=ao.NEXTID); UPDATE fias_AddressObjects ao SET PREVID=NULL WHERE ao.PREVID IS NOT NULL AND NOT EXISTS(SELECT * FROM fias_AddressObjects pao WHERE pao.AOID=ao.PREVID);
BEGIN TRANSACTION; DROP TABLE IF EXISTS fias_AddressObjects; CREATE TABLE IF NOT EXISTS fias_AddressObjects( AOID VARCHAR(36) NOT NULL, PREVID VARCHAR(36) NULL, NEXTID VARCHAR(36) NULL, AOGUID VARCHAR(36) NOT NULL, PARENTGUID VARCHAR(36) NULL, FORMALNAME VARCHAR(120) NULL, SHORTNAME VARCHAR(10) NULL, OFFNAME VARCHAR(120) NULL, POSTALCODE VARCHAR(6) NULL, OKATO VARCHAR(11) NULL, OKTMO VARCHAR(11) NULL, AOLEVEL INTEGER NULL, REGIONCODE VARCHAR(2) NULL, AUTOCODE VARCHAR(1) NULL, AREACODE VARCHAR(3) NULL, CITYCODE VARCHAR(3) NULL, CTARCODE VARCHAR(3) NULL, PLACECODE VARCHAR(3) NULL, STREETCODE VARCHAR(4) NULL, EXTRCODE VARCHAR(4) NULL, SEXTCODE VARCHAR(3) NULL, CODE VARCHAR(17) NULL, PLAINCODE VARCHAR(15) NULL, CURRSTATUS INTEGER NULL, IFNSFL VARCHAR(4) NULL, TERRIFNSFL VARCHAR(4) NULL, IFNSUL VARCHAR(4) NULL, TERRIFNSUL VARCHAR(4) NULL, ACTSTATUS INTEGER NULL, CENTSTATUS INTEGER NULL, STARTDATE TIMESTAMP NULL, ENDDATE TIMESTAMP NULL, UPDATEDATE TIMESTAMP NULL, OPERSTATUS INTEGER NULL, LIVESTATUS INTEGER NULL, NORMDOC VARCHAR(36) NULL, CONSTRAINT XPKfias_AddressObjects PRIMARY KEY (AOID)) WITH (OIDS=False); CREATE INDEX XIE1fias_AddressObjects ON fias_AddressObjects(AOGUID); CREATE INDEX XIE2fias_AddressObjects ON fias_AddressObjects(PARENTGUID); CREATE UNIQUE INDEX XAK1fias_AddressObjects ON fias_AddressObjects(CODE); CREATE INDEX XIE3fias_AddressObjects ON fias_AddressObjects (REGIONCODE,AUTOCODE,AREACODE,CITYCODE,CTARCODE,PLACECODE,STREETCODE,EXTRCODE,SEXTCODE); COMMENT ON TABLE fias_AddressObjects IS 'ADDROBJ (Object) , .'; COMMENT ON COLUMN fias_AddressObjects.AOGUID IS ' '; COMMENT ON COLUMN fias_AddressObjects.FORMALNAME IS ' '; COMMENT ON COLUMN fias_AddressObjects.REGIONCODE IS ' '; COMMENT ON COLUMN fias_AddressObjects.AUTOCODE IS ' '; COMMENT ON COLUMN fias_AddressObjects.AREACODE IS ' '; COMMENT ON COLUMN fias_AddressObjects.CITYCODE IS ' '; COMMENT ON COLUMN fias_AddressObjects.CTARCODE IS ' '; COMMENT ON COLUMN fias_AddressObjects.PLACECODE IS ' '; COMMENT ON COLUMN fias_AddressObjects.STREETCODE IS ' '; COMMENT ON COLUMN fias_AddressObjects.EXTRCODE IS ' '; COMMENT ON COLUMN fias_AddressObjects.SEXTCODE IS ' '; COMMENT ON COLUMN fias_AddressObjects.OFFNAME IS ' '; COMMENT ON COLUMN fias_AddressObjects.POSTALCODE IS ' '; COMMENT ON COLUMN fias_AddressObjects.IFNSFL IS ' '; COMMENT ON COLUMN fias_AddressObjects.TERRIFNSFL IS ' '; COMMENT ON COLUMN fias_AddressObjects.IFNSUL IS ' '; COMMENT ON COLUMN fias_AddressObjects.TERRIFNSUL IS ' '; COMMENT ON COLUMN fias_AddressObjects.OKATO IS ''; COMMENT ON COLUMN fias_AddressObjects.OKTMO IS ''; COMMENT ON COLUMN fias_AddressObjects.UPDATEDATE IS ' () '; COMMENT ON COLUMN fias_AddressObjects.SHORTNAME IS ' '; COMMENT ON COLUMN fias_AddressObjects.AOLEVEL IS ' '; COMMENT ON COLUMN fias_AddressObjects.PARENTGUID IS ' '; COMMENT ON COLUMN fias_AddressObjects.AOID IS ' . '; COMMENT ON COLUMN fias_AddressObjects.PREVID IS ' '; COMMENT ON COLUMN fias_AddressObjects.NEXTID IS ' '; COMMENT ON COLUMN fias_AddressObjects.CODE IS ' 4.0.'; COMMENT ON COLUMN fias_AddressObjects.PLAINCODE IS ' 4.0 ( )'; COMMENT ON COLUMN fias_AddressObjects.ACTSTATUS IS ' . . . 0 – , 1 - '; COMMENT ON COLUMN fias_AddressObjects.CENTSTATUS IS ' '; COMMENT ON COLUMN fias_AddressObjects.OPERSTATUS IS ' – (. OperationStatus)'; COMMENT ON COLUMN fias_AddressObjects.LIVESTATUS IS ' : 0 – , 1 - '; COMMENT ON COLUMN fias_AddressObjects.CURRSTATUS IS ' 4 ( )'; COMMENT ON COLUMN fias_AddressObjects.STARTDATE IS ' '; COMMENT ON COLUMN fias_AddressObjects.ENDDATE IS ' '; COMMENT ON COLUMN fias_AddressObjects.NORMDOC IS ' '; --ROLLBACK TRANSACTION; COMMIT TRANSACTION; SELECT COUNT(*) FROM fias_AddressObjects;
BEGIN TRANSACTION; /***********************************************/ /* */ /**********************************************/ DROP TABLE IF EXISTS fias_AddressObjects_temp; DROP TABLE IF EXISTS fias_DeletedAddressObjects_temp; CREATE TABLE fias_AddressObjects_temp AS SELECT * FROM fias_AddressObjects WHERE AOID IS NULL; CREATE TABLE fias_DeletedAddressObjects_temp AS SELECT * FROM fias_AddressObjects WHERE AOID IS NULL; /**************************************************************/ /* fias_AddressObjects_temp */ /* */ /*************************************************************/ COPY fias_AddressObjects_temp(ACTSTATUS,AOGUID,AOID,AOLEVEL,AREACODE, AUTOCODE,CENTSTATUS,CITYCODE,CODE,CURRSTATUS, ENDDATE,FORMALNAME,IFNSFL,IFNSUL,NEXTID, OFFNAME,OKATO,OKTMO,OPERSTATUS,PARENTGUID, PLACECODE,PLAINCODE,POSTALCODE,PREVID, REGIONCODE,SHORTNAME,STARTDATE,STREETCODE,TERRIFNSFL, TERRIFNSUL,UPDATEDATE,CTARCODE,EXTRCODE,SEXTCODE, LIVESTATUS,NORMDOC) FROM 'W:\Projects\Enisey GIS\DB\SourceData\ADDROBJ24_20161020.csv' WITH (FORMAT csv,DELIMITER ';', ENCODING 'WIN1251'); /**************************************************************/ /* fias_DeletedAddressObjects_Temp */ /* , */ /**************************************************************/ COPY fias_DeletedAddressObjects_Temp(ACTSTATUS,AOGUID,AOID,AOLEVEL,AREACODE, AUTOCODE,CENTSTATUS,CITYCODE,CODE,CURRSTATUS, ENDDATE,FORMALNAME,IFNSFL,IFNSUL,NEXTID, OFFNAME,OKATO,OKTMO,OPERSTATUS,PARENTGUID, PLACECODE,PLAINCODE,POSTALCODE,PREVID, REGIONCODE,SHORTNAME,STARTDATE,STREETCODE,TERRIFNSFL, TERRIFNSUL,UPDATEDATE,CTARCODE,EXTRCODE,SEXTCODE, LIVESTATUS,NORMDOC) FROM 'W:\Projects\Enisey GIS\DB\SourceData\DADDROBJ24_20161020.csv' WITH (FORMAT csv,DELIMITER ';', ENCODING 'WIN1251'); /**************************************************************/ /* CONSTRAINT. */ /**************************************************************/ ALTER TABLE IF EXISTS fias_AddressObjects DROP CONSTRAINT IF EXISTS fk_fias_AddressObjects_AddressObjects_PREVID; ALTER TABLE IF EXISTS fias_AddressObjects DROP CONSTRAINT IF EXISTS fk_fias_AddressObjects_AddressObjects_NEXTID; /**************************************************************/ /* fias_DeletedAddressObjects */ /* , fias_DeletedAddressObjects_Temp */ /**************************************************************/ UPDATE fias_AddressObjects ao SET ACTSTATUS=t.ACTSTATUS, AOGUID=t.AOGUID, AOLEVEL=t.AOLEVEL, AREACODE=t.AREACODE, AUTOCODE=t.AUTOCODE, CENTSTATUS=t.CENTSTATUS, CITYCODE=t.CITYCODE, CODE=t.CODE, CURRSTATUS=t.CURRSTATUS, ENDDATE=t.ENDDATE, FORMALNAME=t.FORMALNAME, IFNSFL=t.IFNSFL, IFNSUL=t.IFNSUL, NEXTID=t.NEXTID, OFFNAME=t.OFFNAME, OKATO=t.OKATO, OKTMO=t.OKTMO, OPERSTATUS=t.OPERSTATUS, PARENTGUID=t.PARENTGUID, PLACECODE=t.PLACECODE, PLAINCODE=t.PLAINCODE, POSTALCODE=t.POSTALCODE, PREVID=t.PREVID, REGIONCODE=t.REGIONCODE, SHORTNAME=t.SHORTNAME, STARTDATE=t.STARTDATE, STREETCODE=t.STREETCODE, TERRIFNSFL=t.TERRIFNSFL, TERRIFNSUL=t.TERRIFNSUL, UPDATEDATE=t.UPDATEDATE, CTARCODE=t.CTARCODE, EXTRCODE=t.EXTRCODE, SEXTCODE=t.SEXTCODE, LIVESTATUS=t.LIVESTATUS, NORMDOC=t.NORMDOC FROM fias_AddressObjects dao INNER JOIN fias_AddressObjects_temp t ON dao.AOID=t.AOID WHERE ao.AOID=dao.AOID; /**************************************************************/ /* fias_DeletedAddressObjects , */ /* fias_DeletedAddressObjects_Temp */ /**************************************************************/ DELETE FROM fias_AddressObjects ao WHERE EXISTS(SELECT 1 FROM fias_DeletedAddressObjects_Temp delao WHERE delao.AOID=ao.AOID); /**************************************************************/ /* fias_DeletedAddressObjects */ /* , fias_DeletedAddressObjects_Temp */ /* CODE LIKE '24%' , , */ /* */ /**************************************************************/ INSERT INTO fias_AddressObjects (ACTSTATUS,AOGUID,AOID,AOLEVEL,AREACODE,AUTOCODE,CENTSTATUS, CITYCODE,CODE,CURRSTATUS,ENDDATE,FORMALNAME,IFNSFL,IFNSUL, NEXTID,OFFNAME,OKATO,OKTMO,OPERSTATUS,PARENTGUID,PLACECODE, PLAINCODE, POSTALCODE,PREVID,REGIONCODE,SHORTNAME,STARTDATE, STREETCODE,TERRIFNSFL,TERRIFNSUL,UPDATEDATE,CTARCODE,EXTRCODE, SEXTCODE,LIVESTATUS,NORMDOC) SELECT ACTSTATUS,AOGUID,AOID,AOLEVEL,AREACODE,AUTOCODE,CENTSTATUS, CITYCODE,CODE,CURRSTATUS,ENDDATE,FORMALNAME,IFNSFL,IFNSUL, NEXTID,OFFNAME,OKATO,OKTMO,OPERSTATUS,PARENTGUID,PLACECODE, PLAINCODE,POSTALCODE,PREVID,REGIONCODE,SHORTNAME,STARTDATE, STREETCODE,TERRIFNSFL,TERRIFNSUL,UPDATEDATE,CTARCODE,EXTRCODE, SEXTCODE,LIVESTATUS,NORMDOC FROM fias_AddressObjects_temp t WHERE CODE LIKE '24%' AND NOT EXISTS(SELECT * FROM fias_AddressObjects ao WHERE ao.AOID=t.AOID) ORDER BY CODE; /**************************************************************/ /* fias_AddressObjects. */ /* NULL */ /**************************************************************/ UPDATE fias_AddressObjects ao SET NEXTID=NULL WHERE ao.NEXTID IS NOT NULL AND NOT EXISTS(SELECT * FROM fias_AddressObjects nao WHERE nao.AOID=ao.NEXTID); UPDATE fias_AddressObjects ao SET PREVID=NULL WHERE ao.PREVID IS NOT NULL AND NOT EXISTS(SELECT * FROM fias_AddressObjects pao WHERE pao.AOID=ao.PREVID); /**************************************************************/ /* CONSTRAINT. */ /**************************************************************/ ALTER TABLE fias_AddressObjects ADD CONSTRAINT fk_fias_AddressObjects_AddressObjects_PREVID FOREIGN KEY(PREVID) REFERENCES fias_AddressObjects (AOID); ALTER TABLE fias_AddressObjects ADD CONSTRAINT fk_fias_AddressObjects_AddressObjects_NEXTID FOREIGN KEY(NEXTID) REFERENCES fias_AddressObjects (AOID); /**************************************************************/ /* . */ /**************************************************************/ DROP TABLE IF EXISTS fias_AddressObjects_temp; DROP TABLE IF EXISTS fias_DeletedAddressObjects_temp; --ROLLBACK TRANSACTION; COMMIUT TRANSACTION; SELECT COUNT(*) FROM fias_AddressObjects;
Source: https://habr.com/ru/post/316856/
All Articles