Esportare i dati in una tabella esternaExport data to an external table

È possibile esportare i dati definendo una tabella esterna ed esportandovi i dati.You can export data by defining an external table and exporting data to it. Le proprietà della tabella vengono specificate quando si Crea la tabella esterna.The table properties are specified when creating the external table. Non è necessario incorporare le proprietà della tabella nel comando Export.You don't need to embed the table's properties in the export command. Il comando Export fa riferimento alla tabella esterna in base al nome.The export command references the external table by name. L'esportazione dei dati richiede l' autorizzazione di amministratore del database.Export data requires database admin permission.

SintassiSyntax

.export [ async ] to table ExternalTableName.export [async] to table ExternalTableName
[ with ( PropertyName = PropertyValue , ... ) ] <| Query di[with (PropertyName = PropertyValue,...)] <| Query

OutputOutput

Parametro di outputOutput parameter TipoType DescrizioneDescription
ExternalTableNameExternalTableName stringString Nome della tabella esterna.The name of the external table.
PercorsoPath stringString Percorso di output.Output path.
NumRecordsNumRecords stringString Numero di record esportati nel percorso.Number of records exported to path.

NoteNotes

  • Lo schema di output della query di esportazione deve corrispondere allo schema della tabella esterna, incluse tutte le colonne definite dalle partizioni.The export query output schema must match the schema of the external table, including all columns defined by the partitions. Se, ad esempio, la tabella è partizionata in base a DateTime, lo schema di output della query deve contenere una colonna timestamp corrispondente a TimestampColumnName.For example, if the table is partitioned by DateTime, the query output schema must have a Timestamp column matching the TimestampColumnName. Il nome della colonna è definito nella definizione di partizionamento della tabella esterna.This column name is defined in the external table partitioning definition.

  • Non è possibile eseguire l'override delle proprietà della tabella esterna usando il comando Esporta.It isn't possible to override the external table properties using the export command. Ad esempio, non è possibile esportare i dati in formato parquet in una tabella esterna il cui formato dati è CSV.For example, you can't export data in Parquet format to an external table whose data format is CSV.

  • Le proprietà seguenti sono supportate come parte del comando Esporta.The following properties are supported as part of the export command. Per informazioni dettagliate, vedere la sezione esportazione nella risorsa di archiviazione :See the export to storage section for details:

    • sizeLimit, parquetRowGroupSize, distributed.sizeLimit, parquetRowGroupSize, distributed.
  • Se la tabella esterna è partizionata, gli artefatti esportati verranno scritti nelle rispettive directory secondo le definizioni di partizione come illustrato nell' esempio di tabella esterna partizionata.If the external table is partitioned, exported artifacts will be written to their respective directories according to the partition definitions as seen in the partitioned external table example.

    • Se un valore di partizione è null o vuoto o non è un valore di directory valido, in base alle definizioni dell'archiviazione di destinazione, il valore della partizione viene sostituito con il valore predefinito __DEFAULT_PARTITION__ .If a partition value is null/empty or is an invalid directory value, per the definitions of the target storage, the partition value is replaced with a default value of __DEFAULT_PARTITION__.

Numero di fileNumber of files

Il numero di file scritti per partizione dipende dalle impostazioni:The number of files written per partition depends on the settings:

  • Se la tabella esterna include solo le partizioni DateTime o nessuna partizione, il numero di file scritti (per ogni partizione, se esistente) dovrebbe essere simile al numero di nodi nel cluster (o più, se sizeLimit viene raggiunto).If the external table includes datetime partitions only, or no partitions at all, the number of files written (for each partition, if exists) should be similar to the number of nodes in the cluster (or more, if sizeLimit is reached). Quando l'operazione di esportazione viene distribuita, tutti i nodi del cluster vengono esportati simultaneamente.When the export operation is distributed, all nodes in the cluster export concurrently. Per disabilitare la distribuzione, in modo che solo un singolo nodo scriva le Scritture, impostare distributed su false.To disable distribution, so that only a single node does the writes, set distributed to false. Questo processo creerà un numero inferiore di file, ma ridurrà le prestazioni di esportazione.This process will create fewer files, but will reduce the export performance.

  • Se la tabella esterna include una partizione in base a una colonna stringa, il numero di file esportati deve essere un singolo file per partizione (o più, se sizeLimit viene raggiunto).If the external table includes a partition by a string column, the number of exported files should be a single file per partition (or more, if sizeLimit is reached). Tutti i nodi continuano a partecipare all'esportazione (operazione distribuita), ma ogni partizione viene assegnata a un nodo specifico.All nodes still participate in the export (operation is distributed), but each partition is assigned to a specific node. Se si imposta distributed su false, solo un nodo singolo effettuerà l'esportazione, ma il comportamento rimarrà lo stesso (un singolo file scritto per partizione).Setting distributed to false, will cause only a single node to do the export, but behavior will remain the same (a single file written per partition).

EsempiExamples

Esempio di tabella esterna non partizionataNon-partitioned external table example

ExternalBlob è una tabella esterna non partizionata.ExternalBlob is a non-partitioned external table.

.export to table ExternalBlob <| T
ExternalTableNameExternalTableName PercorsoPath NumRecordsNumRecords
ExternalBlobExternalBlob http://storage1.blob.core.windows.net/externaltable1cont1/1_58017c550b384c0db0fea61a8661333e.csv 1010

Esempio di tabella esterna partizionataPartitioned external table example

PartitionedExternalBlob è una tabella esterna, definita nel modo seguente:PartitionedExternalBlob is an external table, defined as follows:

.create external table PartitionedExternalBlob (Timestamp:datetime, CustomerName:string) 
kind=blob
partition by 
   "CustomerName="CustomerName,
   bin(Timestamp, 1d)
dataformat=csv
( 
   h@'http://storageaccount.blob.core.windows.net/container1;secretKey'
)
.export to table PartitionedExternalBlob <| T
ExternalTableName Percorso NumRecordsNumRecords
ExternalBlobExternalBlob http://storageaccount.blob.core.windows.net/container1/CustomerName=customer1/2019/01/01/fa36f35c-c064-414d-b8e2-e75cf157ec35_1_58017c550b384c0db0fea61a8661333e.csv 1010
ExternalBlobExternalBlob http://storageaccount.blob.core.windows.net/container1/CustomerName=customer2/2019/01/01/fa36f35c-c064-414d-b8e2-e75cf157ec35_2_b785beec2c004d93b7cd531208424dc9.csv 1010

Se il comando viene eseguito in modo asincrono (usando la async parola chiave), l'output sarà disponibile usando il comando show Operation Details .If the command is executed asynchronously (by using the async keyword), the output is available using the show operation details command.