1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| ------------------------------------------------------------------------------------------------------------
-- TITRE : PB_01_MAJ_USER_DATA
------------------------------------------------------------------------------------------------------------
-- DT CREATION : 19 MAI 2008
-- AUTEUR : HODAWA
-- OBJECTIF : Mise à jour des données utilisateur en cas
-- d'échec de l'importation des données de
-- TERADATA
------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE PB_01_MAJ_USER_DATA AS
DECLARE
@Nb_Row int
BEGIN
-- Etape 00 : Déconnexion des USERs
UPDATE TABLE1 set C1= 'V'
INSERT INTO TABLE1 ( C1, C2, C3)
SELECT 1, getdate(), 1
-- Etape 01 : Suppression de la table TABLE2
TRUNCATE TABLE TABLE2
-- Etape 02 : Suppression des Indexes de la table TABLE2
IF EXISTS (SELECT name FROM sysindexes WHERE name = 'TABLE2_IDX1')
DROP INDEX TABLE2.TABLE2_IDX1
IF EXISTS (SELECT name FROM sysindexes WHERE name = 'TABLE2_IDX2')
DROP INDEX TABLE2.TABLE2_IDX2
IF EXISTS (SELECT name FROM sysindexes WHERE name = 'TABLE2_IDX3')
DROP INDEX TABLE2.TABLE2_IDX3
IF EXISTS (SELECT name FROM sysindexes WHERE name = 'TABLE2_IDX4')
DROP INDEX TABLE2.TABLE2_IDX4
-- Etape 03 : Insertion des datas dans la table de travail (environ 13 min pour 3 600 000 lignes)
INSERT INTO [DATABASE1].[dbo].[TABLE2]([C1],..., [Cn])
SELECT [C1], ..., [Cn]
FROM [DATABASE1].[dbo].[TABLE3]
-- Etape 04 : Reconstruction des Indexes de la table TABLE2
CREATE INDEX TABLE2_IDX1 ON TABLE2(C2, C3, C4) ON [INDEX_ATE_LARGE_F001]
CREATE INDEX TABLE2_IDX2 ON TABLE2(C5) ON [INDEX_ATE_LARGE_F001]
CREATE INDEX TABLE2_IDX3 ON TABLE2(C6) ON [INDEX_ATE_LARGE_F001]
CREATE INDEX TABLE2_IDX4 ON TABLE2(C7) ON [INDEX_ATE_LARGE_F001]
--Etape 05 : Chargement de la variable @row avec le nombre d'enregistrement chargés dans TABLE2
SELECT @Nb_Row = count(*)
FROM TABLE2
-- Etape 06 : Mise à jour de la table TABLE1 avec le nombre d'enregistrement chargés dans TABLE2 et
-- l'indicateur de chargement en cours à 0 (C2).
UPDATE TABLE1
SET nbenr = @Nb_Row , C2=0
WHERE C1= '1'
-- Etape 07 : Suppression des datas dans la table de travail
-- cette étape doit ce faire seulement si les lignes sont insérées dans ACLTOL
TRUNCATE TABLE TABLE3
END
GO |