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
- SQL-Abfrage ausführenDer ü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:
- Dateien hochladen
- Verknüpfung mit der Business Central-Tabelle
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 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
