Skripten
Migration von Seiteninformationen bei PDF-Dokumenten (bei Migration von V4.3 oder früher)
PDF-Dokumente, die mit [Accantum] vor der Version 5.0 archiviert wurden, besitzen keine Seiteninformationen.
Über ein SQL-Skript können diese jedoch teilweise nachträglich erstellt werden. Ein nachträgliches Erzeugen der Seiten-Vorschaubilder ist nicht möglich.
Hinweis |
---|
Stellen Sie vor Ausführung des Skripts sicher, dass Sie über eine Datenbanksicherung verfügen. |
Zum ausführen Ausführen des Skripts gehen Sie wie folgt vor:
Öffnen Sie das Microsoft SQL Server Management Studio
Verbinden Sie sich mit dem SQL-Server auf dem sich die [accantum]- Datenbank befindet. Verwenden Sie hierzu einen Benutzer, der über erhöhte Berechtigungen verfügt (z.B. sa)
Öffnen Sie die [accantum]-Datenbank
Öffnen Sie eine neue Abfrage
Kopieren Sie folgendes Skript in das Abfragefenster
Codeblock |
---|
IF Exists(SELECT * FROM sys.objects where name='accfn_SplitOCRText') DROP FUNCTION dbo.accfn_SplitOCRText GO CREATE FUNCTION accfn_SplitOCRText(@OcrText varchar(max)) RETURNS @ParsedList table ( PageIndex int, OcrText nvarchar(max)) AS BEGIN IF @OcrText IS NULL RETURN DECLARE @Value nvarchar(max) DECLARE @CurrPos int DECLARE @NextPos int DECLARE @Len int DECLARE @Page‘ndex int SET @Cur’Pos=1 SET @Len=LEN(@OcrText) SET @NextPos = CHARINDEX('{{N-E-W P-A-G-E}}', @OcrText) SET @PageIndex=1 BEGIN WHILE @CurrPos>0 BEGIN IF @NextPos>0 SET @Value = LTRIM(RTRIM(SUBSTRING(@OcrText,@CurrPos, @NextPos-@CurrPos))) ELSE SET @Value = LTRIM(RTRIM(SUBSTRING(@OcrText,@CurrPos, @Len-@CurrPos+1))) INSERT INTO @ParsedList (PageIndex,OcrText) Values (@PageIndex,@Value) IF‘@NextPos = 0 BREAK’ SET @CurrPos=@NextPos+18 SET @NextPos = CHARINDEX('{{N-E-W P-A-G-E}}', @OcrText, @CurrPos) SET @PageIndex=@PageIndex+1 END END RETURN END GO GRANT SELECT ON OBJECT::dbo.accfn_SplitOCRText TO public GO DECLARE @Tab TABLE(OCid uniqueidentifier, NCid uniqueidentifier DEFAULT(newid()), SortOrder int, OcrText nvarchar(max)) INSERT INTO @Tab(OCid,SortOrder, OcrText) SELECT c.ContentID,l.PageIndex,l.OcrText FROM tbDocument d INNER JOIN tbDocumentContent c ON d.DocID=c.DocID INNER JOIN tbOcrInfo o ON c.ContentID=o.ContentID CROSS APPLY accfn_SplitOCRText(o.OcrText) l WHERE d.DocType=3 AND c.ContentType=0 AND c.AnalysisStatus IN (2,4) AND NOT EXISTS(SELECT ContentID FROM tbDocumentContent c2 WHERE d.DocID=c2.DocID AND c2.ContentType=16) INSERT INTO tbDocumentContent (ContentID, DocID, BinaryID, ContentType, SortOrder, ContentDescription, OutSourcePath, FileIndex, Rotation, ContentVersion, VersionRemark, AnalysisStatus, AnalysisDate, AnalysisError, Deleted, CreationUser, CreationDa’’,’’odifyUser, ModifyDate) SELECT o.’’id,c.DocID,c.Bina’’ID,16,o.SortOrder,'','',o.SortOrder,0,c.ContentVersion,'', 2, GETDATE(),'',c.Deleted,c.CreationUser,GETDATE(),c.CreationUser,GETDATE() FROM @Tab o INNER JOIN tbDocumentContent c ON c.ContentID=o.OCid INSERT INTO tbOcrInfo(ContentID,OcrText) SELECT o.NCi’,o.OcrText FROM @T’b o GO IF Exists(SELECT * FROM sys.objects where name='accfn_SplitOCRText') DROP FUNCTION dbo.accfn_SplitOCRText GO |
Info |
---|
Je nach Datenmenge / Anzahl Dokumente kann die Ausführung des Skripts mehrere Minuten / Stunden dauern. |