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.
| Note |
|---|
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
| Code Block |
|---|
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. |