Il. inserimento nel comando (pull dei dati dall'archiviazione)The .ingest into command (pull data from storage)

Il .ingest into comando inserisce i dati in una tabella eseguendo il pull dei dati da uno o più file di archiviazione cloud.The .ingest into command ingests data into a table by "pulling" the data from one or more cloud storage files. Ad esempio, il comando può recuperare i BLOB in formato CSV 1000 dall'archiviazione BLOB di Azure, analizzarli e inserirli insieme in un'unica tabella di destinazione.For example, the command can retrieve 1000 CSV-formatted blobs from Azure Blob Storage, parse them, and ingest them together into a single target table. I dati vengono aggiunti alla tabella senza influire sui record esistenti e senza modificare lo schema della tabella.Data is appended to the table without affecting existing records, and without modifying the table's schema.

SintassiSyntax

.ingest[ async ] into table TableName SourceDataLocator [ with ( IngestionPropertyName = IngestionPropertyValue [ , ...] ) ].ingest [async] into table TableName SourceDataLocator [with ( IngestionPropertyName = IngestionPropertyValue [, ...] )]

ArgomentiArguments

  • async: Se specificato, il comando verrà restituito immediatamente e continuerà l'inserimento in background.async: If specified, the command will return immediately, and continue ingestion in the background. I risultati del comando includeranno un OperationId valore che può essere usato con il .show operation comando per recuperare lo stato di completamento dell'inserimento e i risultati.The results of the command will include an OperationId value that can then be used with the .show operation command to retrieve the ingestion completion status and results.

  • TableName: nome della tabella in cui inserire i dati.TableName: The name of the table to ingest data to. Il nome della tabella è sempre relativo al database nel contesto e il relativo schema corrisponde allo schema che verrà utilizzato per i dati se non viene fornito alcun oggetto mapping dello schema.The table name is always relative to the database in context, and its schema is the schema that will be assumed for the data if no schema mapping object is provided.

  • SourceDataLocator: valore letterale di tipo string o elenco delimitato da virgole di tali valori letterali racchiusi tra ( ) caratteri e che rappresenta le stringhe di connessione di archiviazione.SourceDataLocator: A literal of type string, or a comma-delimited list of such literals surrounded by ( and ) characters, representing storage connection strings. Kusto usa un formato URI per descrivere i file di archiviazione contenenti i dati da estrarre.Kusto uses a URI format to describe the storage files containing the data to pull.

    • Una singola stringa di connessione deve fare riferimento a un singolo file ospitato da un account di archiviazione.A single connection string must refer to a single file hosted by a storage account.
    • L'inserimento di più file può essere eseguito specificando più stringhe di connessione separate da una virgola o inserendo da una query di una tabella esterna.Ingestion of multiple files can be done by specifying multiple connection strings separated with a comma, or by ingesting from a query of an external table.

Nota

Si consiglia vivamente di usare valori letterali stringa offuscati per il SourceDataPointer che include le credenziali effettive.It is strongly recommended to use obfuscated string literals for the SourceDataPointer that includes actual credentials in it. Il servizio si assicurerà di pulire le credenziali nelle tracce interne, nei messaggi di errore e così via.The service will be sure to scrub credentials in its internal traces, error messages, etc.

  • IngestionPropertyName, IngestionPropertyValue: un numero qualsiasi di proprietà di inserimento che influiscono sul processo di inserimento.IngestionPropertyName, IngestionPropertyValue: Any number of ingestion properties that affect the ingestion process.

RisultatiResults

Il risultato del comando è una tabella con un numero di record pari al numero di partizioni di dati ("extent") generate dal comando.The result of the command is a table with as many records as there are data shards ("extents") generated by the command. Se non è stata generata alcuna partizione di dati, viene restituito un singolo record con un ID di extent vuoto (con valore zero).If no data shards have been generated, a single record is returned with an empty (zero-valued) extent ID.

NomeName TypeType DescrizioneDescription
ExtentIdExtentId guid Identificatore univoco per la partizione di dati generata dal comando.The unique identifier for the data shard that was generated by the command.
ItemLoadedItemLoaded string Uno o più file di archiviazione correlati a questo record.One or more storage files that are related to this record.
DurataDuration timespan Tempo impiegato per eseguire l'inserimento.How long it took to perform ingestion.
HasErrorsHasErrors bool Indica se questo record rappresenta un errore di inserimento.Whether this record represents an ingestion failure or not.
OperationIdOperationId guid ID univoco che rappresenta l'operazione.A unique ID representing the operation. Può essere usato con il .show operation comando.Can be used with the .show operation command.

Osservazioni:Remarks

Questo comando non modifica lo schema della tabella in cui viene inserito.This command does not modify the schema of the table being ingested into. Se necessario, i dati vengono "forzati" in questo schema durante l'inserimento, non viceversa (le colonne aggiuntive vengono ignorate e le colonne mancanti vengono considerate come valori null).If necessary, the data is "coerced" into this schema during ingestion, not the other way around (extra columns are ignored, and missing columns are treated as null values).

esempiExamples

L'esempio seguente indica al motore di leggere due BLOB dall'archivio BLOB di Azure come file CSV e di inserire il contenuto nella tabella T .The next example instructs the engine to read two blobs from Azure Blob Storage as CSV files, and ingest their contents into table T. ...Rappresenta una firma di accesso condiviso (SAS) di archiviazione di Azure che concede l'accesso in lettura a ogni BLOB.The ... represents an Azure Storage shared access signature (SAS) which gives read access to each blob. Si noti anche l'uso di stringhe offuscate (davanti ai h valori di stringa) per assicurarsi che la firma di accesso condiviso non venga mai registrata.Note also the use of obfuscated strings (the h in front of the string values) to ensure that the SAS is never recorded.

.ingest into table T (
    h'https://contoso.blob.core.windows.net/container/file1.csv?...',
    h'https://contoso.blob.core.windows.net/container/file2.csv?...'
)

L'esempio seguente riguarda l'inserimento di dati da Azure Data Lake Storage generazione 2 (ADLSv2).The next example is for ingesting data from Azure Data Lake Storage Gen 2 (ADLSv2). Le credenziali usate qui ( ... ) sono le credenziali dell'account di archiviazione (chiave condivisa) e si usa l'offuscamento delle stringhe solo per la parte segreta della stringa di connessione.The credentials used here (...) are the storage account credentials (shared key), and we use string obfuscation only for the secret part of the connection string.

.ingest into table T (
  'abfss://myfilesystem@contoso.dfs.core.windows.net/path/to/file1.csv;...'
)

Nell'esempio seguente viene inserito un singolo file da Azure Data Lake Storage (ADLS).The next example ingests a single file from Azure Data Lake Storage (ADLS). Usa le credenziali dell'utente per accedere a ADLS (pertanto non è necessario considerare l'URI di archiviazione come contenente un segreto).It uses the user's credentials to access ADLS (so there's no need to treat the storage URI as containing a secret). Viene inoltre illustrato come specificare le proprietà di inserimento.It also shows how to specify ingestion properties.

.ingest into table T ('adl://contoso.azuredatalakestore.net/Path/To/File/file1.ext;impersonate')
  with (format='csv')