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--automappingnicht verwendet wird.
Funktionsweise
- 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 alsBLOB(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.
- Dateien hochladen
- Falls
FilePathverwendet wird, wird die Datei aus dem angegebenen Pfad geladen. - Falls
Contentverwendet wird, wird die Datei direkt aus der SQL-Abfrage alsBLOBübermittelt. - Die Datei wird als Blob in Tenant Media gespeichert und erhält eine GUID.
- Falls
- 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')
GOEbenso 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 1173Fall 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 50000Voraussetzungen
- Die Zieltabelle in Business Central muss ein Media- oder Mediaset-Feld enthalten.
- Falls
FilePathverwendet wird, müssen die Dateien physisch auf dem Server vorhanden sein. - Falls
Contentverwendet 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