'Import neuer' Artikel beschleunigen

Mehr
7 Jahre 1 Monat her - 7 Jahre 1 Monat her #911 von arnd
'Import neuer' Artikel beschleunigen wurde erstellt von arnd
Hallo!

Eine kleine Ergänzung für die UserPreImport - Procedure.
Sie löscht beim 'Import neuer' alle Artikel aus der Dateiimport-Tabelle, die schon im Pool oder der 300-Datenbank vorhanden sind.
Bei großen Datenmengen mit wiederkehrenden Artikeln kann das den Import deutlich beschleunigen.
USE [....300]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[UserPreImport] (@ImportNr VarChar(5), @Arbeitsplatz as VarChar(2)) as

DECLARE @TabName varchar(80)
DECLARE @PoolDBName varchar(20)

SET @TabName = 'DateiImport' + @Arbeitsplatz + '_' +@ImportNr
SET @PoolDBName = '...._pool'

-- Einschränkung auf Importnummern, die mit 10 oder 99 beginnen (Bei uns sind das die Artikelimporte)

if (left(@ImportNr,2))='10' or (left(@ImportNr,2))='99' 
begin

-- Bei Import neuer Artikel in Pool oder 300
    if (select count(*)  from ...._vd3.dbo.DateiImport
    where ...._vd3.dbo.DateiImport.ImportNr=@ImportNr AND
    (LEFT(ToDo, 1) = '0') AND
    (SUBSTRING(ToDo, 2, 1) = '1' OR SUBSTRING(ToDo, 2, 1) = '2'))>0

begin
exec ('delete   
FROM        '+@TabName+' 
FROM         '+@TabName+' RIGHT OUTER JOIN
             (SELECT     ArtikelNr, Einheit, Farbe, Grösse, EAN, Typ, DruckEAN
                FROM          '+@PoolDBName+'.dbo.EAN 
                UNION
                SELECT     ArtikelNr, Einheit, Farbe, Grösse, EAN, Typ, DruckEAN
                FROM         EAN ) AS Pool_EAN 
					ON '+@TabName+'.EAN#0_EAN#0 = Pool_EAN.EAN
WHERE     (NOT ('+@TabName+'.lfd IS NULL))
')
end
end

Grüße
Arnd

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
7 Jahre 1 Monat her - 7 Jahre 1 Monat her #338 von asu
Hallo arnd,

daraus deute ich, das ihr im Import nicht alles in einem Durchlauf erledigt, also vorhandene Artikel in der Pool- und Hauptdatenbank updaten, neue anlegen usw., sondern getrennte Import für jeweils eine Aufgabe fahrt, richtig ?

Gruß

asu

"Wer Rechtschreibfehler findet, darf sie behalten."

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
7 Jahre 1 Monat her - 7 Jahre 1 Monat her #339 von arnd
Hallo asu,

ja, es geht haupsächlich um den regelmäßigen Pool-Import.
Deshalb die Einschränkung mit dem DateiImport.ToDo - Diese muss natürlich anders aussehen:
-- Bei Import neuer Artikel in Pool oder 300
if (select count(*)  from ...._vd3.dbo.DateiImport 
where ...._vd3.dbo.DateiImport.ImportNr=@ImportNr AND
(LEFT(ToDo, 1) = '0') AND 
(SUBSTRING(ToDo, 2, 1) = '1' OR SUBSTRING(ToDo, 2, 1) = '2'))>0
Damit sollte nur gelöscht werden, wenn kein Update ausgewählt ist.
Danke für den Hinweis.

Grüße
Arnd

Bitte Anmelden oder Registrieren um der Konversation beizutreten.