Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Iscriviti oggi stessoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Si applica a:SQL Server
Viene descritto come caricare o eseguire la migrazione dei file in tabelle FileTable.
Il metodo scelto per il caricamento o la migrazione di file in una tabella FileTable dipende dalla posizione in cui sono attualmente archiviati i file.
Attuale posizione dei file | Opzioni per migrazione |
---|---|
I file sono attualmente archiviati nel file system. SQL Server non dispone di conoscenza dei file. |
Poiché una tabella FileTable viene visualizzata come cartella nel file system di Windows, è possibile caricare facilmente file in un nuova tabella FileTable tramite alcuni dei metodi disponibili per lo spostamento o la copia di file. Questi metodi includono Esplora file di Windows, opzioni della riga di comando, come ad esempio xcopy e robocopy, nonché applicazioni o script personalizzati. Non è possibile convertire una cartella esistente in tabella FileTable. |
I file sono attualmente archiviati nel file system. SQL Server contiene una tabella di metadati contenente puntatori ai file. |
Il primo passaggio consiste nello spostare o copiare i file tramite uno dei metodi indicati in precedenza. Il secondo passaggio consiste nell'aggiornare la tabella esistente di metadati in modo che punti alla nuova posizione dei file. Per altre informazioni, vedere Esempio: migrazione di file dal file system in una tabella FileTable in questo articolo. |
Per caricare i file in una tabella FileTable è possibile usare i metodi seguenti:
Trascina e rilascia i file dalle cartelle di origine alla nuova cartella FileTable in Esplora risorse.
Usare opzioni della riga di comando quali move
, copy
, xcopy
, o robocopy
dal prompt dei comandi o in un file o script di comandi batch.
Scrivere un'applicazione personalizzata per spostare o copiare i file in C# o Visual Basic .NET. Chiamare i metodi dallo spazio dei nomi System.IO
.
In questo scenario i file vengono archiviati nel file system ed è disponibile una tabella di metadati in SQL Server contenente puntatori ai file. Si desidera spostare i file in una tabella FileTable, quindi sostituire il percorso UNC originale per ogni file nei metadati con il percorso UNC della tabella FileTable. La funzione GetPathLocator ti consente di raggiungere tale obiettivo.
Per questo esempio, si supponga la disponibilità di una tabella di database esistente, denominata PhotoMetadata
, che contiene dati su fotografie. Questa tabella include una colonna UNCPath
di tipo varchar(512) contenente il percorso UNC effettivo di un file .jpg
.
Per eseguire la migrazione dei file di immagine dal file system in una tabella FileTable, seguire questa procedura:
Creare una nuova tabella FileTable che contenga i file. In questo esempio si usa il nome di tabella dbo.PhotoTable
ma non viene illustrato il codice per creare la tabella.
Utilizzare xcopy o uno strumento simile per copiare i file .jpg
, con la relativa struttura di directory, nella directory radice della tabella FileTable.
Correggere i metadati nella tabella PhotoMetadata
tramite codice simile al seguente esempio:
-- Add a path locator column to the PhotoMetadata table.
ALTER TABLE PhotoMetadata ADD pathlocator HIERARCHYID;
-- Get the root path of the Photo directory on the File Server.
DECLARE @UNCPathRoot VARCHAR(100) = '\\RemoteShare\Photographs';
-- Get the root path of the FileTable.
DECLARE @FileTableRoot VARCHAR(1000);
SELECT @FileTableRoot = FileTableRootPath('dbo.PhotoTable');
-- Update the PhotoMetadata table.
-- Replace the File Server UNC path with the FileTable path.
UPDATE PhotoMetadata
SET UNCPath = REPLACE(UNCPath, @UNCPathRoot, @FileTableRoot);
-- Update the pathlocator column to contain the pathlocator IDs from the FileTable.
UPDATE PhotoMetadata
SET pathlocator = GetPathLocator(UNCPath);
Una tabella FileTable si comporta come una normale tabella per operazioni in blocco. Una tabella FileTable include vincoli definiti dal sistema che garantiscono l'integrità dello spazio dei nomi di file e directory. È necessario verificare questi vincoli per i dati caricati in bulk nella tabella FileTable. Poiché alcune operazioni di inserimento massivo consentono di ignorare i vincoli di tabella, si applicano i requisiti seguenti.
Le operazioni di caricamento bulk che impongono vincoli possono essere eseguite su una tabella FileTable esattamente come su qualsiasi altra tabella. Questa categoria include le operazioni seguenti:
CHECK_CONSTRAINTS
.BULK INSERT
con clausola CHECK_CONSTRAINTS
.INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...)
senza clausola IGNORE_CONSTRAINTS
.Le operazioni di caricamento bulk che non applicano vincoli hanno esito negativo a meno i vincoli definiti dal sistema della tabella FileTable non siano disabilitati. Questa categoria include le operazioni seguenti:
CHECK_CONSTRAINTS
.BULK INSERT
senza clausola CHECK_CONSTRAINTS
.INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...)
con clausola IGNORE_CONSTRAINTS
.È possibile utilizzare diversi metodi per eseguire il caricamento bulk di file in una tabella FileTable:
Chiamare con la clausola CHECK_CONSTRAINTS
.
Disabilitare lo spazio dei nomi FileTable ed eseguire una chiamata senza la clausola CHECK_CONSTRAINTS
. Riabilitare nuovamente quindi lo spazio dei nomi FileTable.
Per informazioni su come disabilitare i vincoli FileTable, vedere Gestire le tabelle FileTable.
Per eseguire il caricamento bulk di file in una tabella FileTable senza la necessità di applicare vincoli definiti dal sistema, è possibile disabilitare temporaneamente i vincoli. Per altre informazioni, vedere Gestire le tabelle FileTable.
Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Iscriviti oggi stessoFormazione
Modulo
Carica dati in un data warehouse di Microsoft Fabric - Training
Esplorare il processo di caricamento dei dati in un warehouse in Microsoft Fabric.