'Import neuer' Artikel beschleunigen

Mehr
13 Jahre 2 Monate her - 13 Jahre 2 Monate 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.
Code:
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 um der Konversation beizutreten.

Mehr
13 Jahre 2 Monate her - 13 Jahre 2 Monate 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 um der Konversation beizutreten.

Mehr
13 Jahre 2 Monate her - 13 Jahre 2 Monate 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:
Code:
-- 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 um der Konversation beizutreten.

Signum Warenwirtschaftssysteme GmbH
Kasinostraße 2
DE-64293 Darmstadt

Tel: +49 (6151) 15 18 - 0
Fax: +49 (6151) 15 18 - 100
team@signum.info