Import von Bildern und Dateien in Business Central mittels DataMigrate Pro

Der Parameter -t putdata ermöglicht auch das automatische Hochladen von Dateien in ein Media– oder Mediaset-Feld einer bestimmten Tabelle in Business Central. Die hochgeladenen Dateien werden in Tenant Media gespeichert und mit einer GUID referenziert. Diese GUID wird dann in das entsprechende Media– oder Mediaset-Feld der Zieltabelle eingetragen.

Befehlssyntax

DataMigratePro -t putdata -s <TableNo> -i "<SQL-Befehl>" --automapping <Tabellennummer>

oder mit manueller Mapping-Datei:

DataMigratePro -t putdata -s <TableNo> -i "<SQL-Befehl>" -m <Pfad zur Mapping-Datei>

Parameterbeschreibung

  • -s <TableNo>
    Gibt die Ziel-Tabelle in Business Central an, in die die Dateien importiert werden.
  • -i "<SQL-Befehl>"
    Definiert den SQL-Befehl, der die benötigten Informationen zur Dateiübertragung liefert.
  • --automapping <Tabellennummer>
    Erstellt automatisch ein Mapping für die Tabellen- und Feldzuordnung.
  • -m <Pfad zur Mapping-Datei>
    Gibt eine manuelle Mapping-Datei an, falls --automapping nicht verwendet wird.

Funktionsweise

  1. SQL-Abfrage ausführen
    Der über -i übergebene SQL-Befehl liefert die erforderlichen Informationen für die Dateiübertragung.
    Dabei müssen für das betroffene Media– oder Mediaset-Feld in der Business Central-Zieltabelle folgende drei bzw. vier Spalten zurückgegeben werden:
    • <Feldname>.Description → Beschreibung des Dokuments (z. B. Dateiname)
    • <Feldname>.MimeType → MIME-Typ der Datei (z. B. image/jpeg)
    • Je nach Quelle:
      • <Feldname>.FilePath → Dateipfad (falls die Datei aus dem Dateisystem kommt)
      • <Feldname>.Content → Dateiinhalt als BLOB (falls die Datei aus einer Datenbank stammt)
    • Zusätzlich muss der SQL-Befehl alle Primärschlüsselfelder der Ziel-Tabelle zurückgeben, um die Datei dem richtigen Datensatz zuzuordnen.
  2. Dateien hochladen
    • Falls FilePath verwendet wird, wird die Datei aus dem angegebenen Pfad geladen.
    • Falls Content verwendet wird, wird die Datei direkt aus der SQL-Abfrage als BLOB übermittelt.
    • Die Datei wird als Blob in Tenant Media gespeichert und erhält eine GUID.
  3. Verknüpfung mit der Business Central-Tabelle
    • Die generierte GUID wird im entsprechenden Media– oder Mediaset-Feld gespeichert.
    • Falls es sich um ein Mediaset handelt, wird das neue Medium dem Tenant Media Set hinzugefügt.

Fall 1: Dateien aus dem Dateisystem in die Tabelle [Document Attachment] hochladen

Vorarbeit

CREATE TABLE [dbo].[ContractDocuments](
	[Contract Code] [nvarchar](20) NOT NULL,
	[FileName] [nvarchar](255) NOT NULL,
	[Extension] [nvarchar](10) NOT NULL,
	[Path to File] [nvarchar](512) NOT NULL,
 CONSTRAINT [PK_ContractDocuments] PRIMARY KEY CLUSTERED 
(
	[Contract Code] ASC,
	[FileName] ASC
)
) ON [PRIMARY]
GO
INSERT [dbo].[ContractDocuments] ([Contract Code], [FileName], [Extension], [Path to File]) 
VALUES 
 (N'CONTRACT001', N'Arbeitsvertrag_Befristet.pdf', N'pdf', N'C:\Mustervertraege\Arbeitsvertrag_Befristet.pdf')
,(N'CONTRACT002', N'Arbeitsvertrag_Unbefristet.pdf', N'pdf', N'C:\Mustervertraege\Arbeitsvertrag_Unbefristet.pdf')
,(N'CONTRACT003', N'Ausbildungsvertrag.pdf', N'pdf', N'C:\Mustervertraege\Ausbildungsvertrag.pdf')
,(N'CONTRACT004', N'Kulturvertrag.pdf', N'pdf', N'C:\Mustervertraege\Kulturvertrag.pdf')
,(N'CONTRACT005', N'Bauvertrag.pdf', N'pdf', N'C:\Mustervertraege\Bauvertrag.pdf')
GO

Ebenso muss in der Mapping-Konfiguration eine Vorbereitung erfolgen oder man legt ein manuelles Mapping an. Hier die erste Variante, bei der sich die Quellkonfiguration an der SQL-Abfrage orientiert und nicht aus der Struktur von NAV ableiten lässt und somit manuell einzutragen ist.

Die SQL-Abfrage gibt den Primärschlüssel ([ID],[Table ID],[No_]) und die Dateiinformationen für das Media-Feld [Document Reference ID] zurück:

SELECT ROW_NUMBER() OVER(ORDER BY [Contract Code]) [ID]
     , 8052 [Table ID] -- Debitorenverträge
	 , [Contract Code] [No_]
	 , 21 [Document Type] -- Service Contract
	 , 0 [Line No_]
	 , GETDATE() [Attached Date]
	 , [FileName] [File Name]
     , [Extension] [File Extension]
     , [FileName] [Document Reference ID.Description]
	 , CASE WHEN [Extension] = 'jpg' THEN 'image/jpeg' WHEN [Extension] = 'png' THEN 'image/png' ELSE 'application/octet-stream' END AS [Document Reference ID.MimeType]
     , [Path to File] [Document Reference ID.FilePath]
  FROM [dbo].[ContractDocuments]

Befehl zur Ausführung:

DataMigratePro -t putdata -s 1173 -i "SELECT ROW_NUMBER() OVER(ORDER BY [Contract Code]) [ID], 8052 [Table ID], [Contract Code] [No_], 21 [Document Type] -- Service Contract, 0 [Line No_], GETDATE() [Attached Date], [FileName] [File Name], [Extension] [File Extension], [FileName] [Document Reference ID.Description], CASE WHEN [Extension] = 'jpg' THEN 'image/jpeg' WHEN [Extension] = 'png' THEN 'image/png' ELSE 'application/octet-stream' END AS [Document Reference ID.MimeType], [Path to File] [Document Reference ID.FilePath] FROM [dbo].[ContractDocuments]" --automapping 1173

Fall 2: Dateien aus einem BLOB-Feld in der Datenbank hochladen

Falls die Dateien in einer SQL-Datenbank als BLOB gespeichert sind, muss stattdessen .Content verwendet werden:

SELECT 
    [Contract Code] AS [Code], 
    [FileName] AS [Documents.Description], 
    [MimeType] AS [Documents.MimeType], 
    [FileContent] AS [Documents.Content] 
FROM [Some Table with Document Information]

Befehl zur Ausführung:

DataMigratePro -t putdata -s 50000 -i "SELECT ..." --automapping 50000

Voraussetzungen

  • Die Zieltabelle in Business Central muss ein Media- oder Mediaset-Feld enthalten.
  • Falls FilePath verwendet wird, müssen die Dateien physisch auf dem Server vorhanden sein.
  • Falls Content verwendet wird, muss die Datei bereits als BLOB in der SQL-Datenbank vorliegen.
  • Die Business Central-Instanz muss für die Verwendung von Media-/Mediaset-Feldern konfiguriert sein.

Unterstützte Dateiformate

  • Bilder: jpg, png, gif, bmp, tiff
  • Dokumente: pdf, txt, docx
Einen Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert