COPY INTO (Delta Lake op Azure Databricks)

Laadt gegevens van een bestandslocatie in een Delta-tabel. Dit is een her trieerbare en idempotente bewerking. Bestanden op de bronlocatie die al zijn geladen, worden overgeslagen.

Syntax

COPY INTO table_identifier
  FROM [ file_location | (SELECT expression_list FROM file_location) ]
  FILEFORMAT = data_source
  [FILES = [file_name, ... | PATTERN = 'regex_pattern']
  [FORMAT_OPTIONS ('data_source_reader_option' = 'value', ...)]
  [COPY_OPTIONS 'force' = ('false'|'true')]
  • table_identifier

    • [database_name.] table_name: Een tabelnaam, eventueel gekwalificeerd met een databasenaam.
    • delta.`<path-to-table>`: De locatie van een bestaande Delta-tabel.
  • FROM file_location

    De bestandslocatie waar de gegevens vandaan moeten worden geladen. Bestanden op deze locatie moeten de indeling hebben die is opgegeven in FILEFORMAT .

  • SELECTEER expression_list

    Selecteert de opgegeven kolommen of expressies uit de brongegevens voordat u naar de Delta-tabel kopieert. De expressies kunnen van alles zijn wat u gebruikt met SELECT -instructies, inclusief vensterbewerkingen. U kunt aggregatie-expressies alleen gebruiken voor globale aggregaties. U kunt kolommen GROUP BY niet gebruiken met deze syntaxis.

  • FILEFORMAT = data_source

    De indeling van de bronbestanden die moeten worden geladen. Een van CSV , , , , JSONAVROORCPARQUET .

  • BESTANDEN

    Een lijst met te laden bestandsnamen, met een lengte van maximaal 1000. Kan niet worden opgegeven met PATTERN .

  • PATROON

    Een regex-patroon dat de bestanden identificeert die moeten worden geladen vanuit de bronmap. Kan niet worden opgegeven met FILES .

  • FORMAT_OPTIONS

    Opties die moeten worden doorgegeven aan Apache Spark gegevensbronlezer voor de opgegeven indeling. Zie Opmaakopties voor elke bestandsindeling.

  • COPY_OPTIONS

    Opties voor het bepalen van de werking van de COPY INTO opdracht. De enige optie is . Als deze optie is ingesteld op 'force' , wordt idempotentie uitgeschakeld en worden bestanden geladen, ongeacht of ze 'true' al eerder zijn geladen.

Voorbeelden

CSV-bestanden laden

In het volgende voorbeeld worden CSV-bestanden uit Azure Data Lake Storage Gen2 onder in abfss://container@storageAccount.dfs.core.windows.net/base/path/folder1 een Delta-tabel op abfss://container@storageAccount.dfs.core.windows.net/deltaTables/target geladen.

COPY INTO delta.`abfss://container@storageAccount.dfs.core.windows.net/deltaTables/target`
FROM (
  SELECT key, index, textData, 'constant_value'
  FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
)
FILEFORMAT = CSV
PATTERN = 'folder1/file_[a-g].csv'
FORMAT_OPTIONS('header' = 'true')

-- The example below loads CSV files without headers on ADLS Gen2 using COPY INTO.
-- By casting the data and renaming the columns, you can put the data in the schema you want
COPY INTO delta.`abfss://container@storageAccount.dfs.core.windows.net/deltaTables/target`
FROM (
  SELECT _c0::bigint key, _c1::int index, _c2 textData
  FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
)
FILEFORMAT = CSV
PATTERN = 'folder1/file_[a-g].csv'

JSON-gegevens laden

In het volgende voorbeeld worden JSON-gegevens uit vijf bestanden op AWS S3 geladen in de Delta-tabel met de naam my_json_data . Deze tabel moet worden gemaakt voordat COPY INTO deze kan worden uitgevoerd. Als er al gegevens uit een van de bestanden zijn geladen, worden de gegevens voor dat bestand niet opnieuw geladen.

COPY INTO my_json_data
FROM 's3://my-bucket/jsonData'
FILEFORMAT = JSON
FILES = ('f1.json', 'f2.json', 'f3.json', 'f4.json', 'f5.json')

-- The second execution will not copy any data since the first command already loaded the data
COPY INTO my_json_data
FROM 's3://my-bucket/jsonData'
FILEFORMAT = JSON
FILES = ('f1.json', 'f2.json', 'f3.json', 'f4.json', 'f5.json')

Avro-gegevens laden

In het volgende voorbeeld worden Avro-gegevens in Google Cloud Storage behulp van aanvullende SQL expressies als onderdeel van de SELECT instructie .

COPY INTO my_delta_table
FROM (SELECT to_date(dt) dt, event as measurement, quantity::double FROM 'gs://my-bucket/avroData')
FILEFORMAT = AVRO

Opmaakopties

Algemene opties

De volgende opties zijn van toepassing op alle bestandsindelingen.

Optie
modifiedAfter

Type: Timestamp String , bijvoorbeeld 2021-01-01 00:00:00.000000 UTC+0

Een optionele tijdstempel voor het opnemen van bestanden met een wijzigingstijdstempel na de opgegeven tijdstempel. Beschikbaar in Databricks Runtime 8.0 en hoger.

Standaardwaarde: Geen
modifiedBefore

Type: Timestamp String , bijvoorbeeld 2021-01-01 00:00:00.000000 UTC+0

Een optionele tijdstempel voor het opnemen van bestanden met een wijzigingstijdstempel vóór de opgegeven tijdstempel. Beschikbaar in Databricks Runtime 8.0 en hoger.

Standaardwaarde: Geen
pathGlobFilter

Type: String

Een potentieel glob-patroon voor het kiezen van bestanden. Gelijk aan
PATTERN in COPY INTO .

Standaardwaarde: Geen
recursiveFileLookup

Type: Boolean

Of gegevens recursief moeten worden geladen in de basismap en partitiedeferentie wordt overgeslagen.

Standaardwaarde: false

JSON Opties

Optie
allowBackslashEscapingAnyCharacter

Type: Boolean

Of backslashes een escape-teken mogen gebruiken dat slaagt. Als deze functie niet is ingeschakeld, kunnen alleen tekens worden uitgesloten die expliciet worden vermeld in de JSON-specificatie.

Standaardwaarde: false
allowComments

Type: Boolean

Of u het gebruik van opmerkingen in de Stijl van Java, C en C++ (, , en varianten) binnen '/''*''//' geparseerde inhoud wilt toestaan of niet.

Standaardwaarde: false
allowNonNumericNumbers

Type: Boolean

Of de set not-a-number ( ) tokens als juridische NaN drijvende-getalwaarden moet worden toegestaan.

Standaardwaarde: true
allowNumericLeadingZeros

Type: Boolean

Of integrale getallen moeten beginnen met extra (te negeren) nullen (bijvoorbeeld 000001).

Standaardwaarde: false
allowSingleQuotes

Type: Boolean

Of het gebruik van enkele aanhalingstekens (apostrof, teken ) voor het aanhalingsteken van tekenreeksen '\' (namen en tekenreekswaarden) is toegestaan.

Standaardwaarde: true
allowUnquotedControlChars

Type: Boolean

Of U wilt toestaan dat JSON-tekenreeksen niet-opeenvolgend besturingselementtekens bevatten (ASCII-tekens met een waarde kleiner dan 32, inclusief tab- en regelinvoertekens) of niet.

Standaardwaarde: false
allowUnquotedFieldNames

Type: Boolean

Of u gebruik wilt toestaan van veldnamen zonder aaneenmerking (die zijn toegestaan door JavaScript, maar niet door de JSON-specificatie).

Standaardwaarde: false
badRecordsPath

Type: String

Het pad voor het opslaan van bestanden voor het vastleggen van de informatie over slechte JSON-records.

Standaardwaarde: Geen
columnNameOfCorruptRecord

Type: String

De kolom voor het opslaan van records die misvormd zijn en niet kunnen worden geparseerd. Als de mode voor parseren is ingesteld op DROPMALFORMED , is deze kolom leeg.

Standaardwaarde: _corrupt_record
Dateformat

Type: String

De indeling voor het parseren van datumreeksen.

Standaardwaarde: yyyy-MM-dd
dropFieldIfAllNull

Type: Boolean

Of u kolommen van alle null-waarden of lege matrices en structs wilt negeren tijdens schemadeferentie.

Standaardwaarde: false
encoding ofcharset

Type: String

De naam van de codering van de JSON-bestanden. Zie java.nio.charset.Charset voor een lijst met opties. U kunt en UTF-16 niet UTF-32 gebruiken wanneer multilinetrue is.

Standaardwaarde: UTF-8
inferTimestamp

Type: Boolean

Of u tijdstempelreeksen als een wilt TimestampType afleiden. Als deze optie is ingesteld op
true, kan schemadeferentie aanzienlijk langer duren.

Standaardwaarde: false
lineSep

Type: String

Een tekenreeks tussen twee opeenvolgende JSON-records.

Standaardwaarde: Geen, die betrekking heeft \r op \r\n , en \n
landinstelling

Type: String

Een java.util.Locale id. Beïnvloedt de standaarddatum, tijdstempel en decimale parsering binnen de JSON.

Standaardwaarde: US
Modus

Type: String

Parsermodus rond het verwerken van misvormde records. Een van 'PERMISSIVE' ,
'DROPMALFORMED'of 'FAILFAST' .

Standaardwaarde: PERMISSIVE
Multiline

Type: Boolean

Of de JSON-records meerdere regels bespannen.

Standaardwaarde: false
prefersDecimal

Type: Boolean

Of floats moeten worden afleiden en dubbel worden weergegeven zoals DecimalType tijdens schemadeferentie.

Standaardwaarde: false
primitivesAsString

Type: Boolean

Of primitieve typen, zoals getallen en booleaanse waarde, moeten worden afleiden als StringType .

Standaardwaarde: false
rescuedDataColumn

Type: String

Of u alle gegevens wilt verzamelen die niet kunnen worden geparseerd als gevolg van een gegevenstype dat niet overeenkomen of schema's die niet overeenkomen (inclusief kolombehuisting) in een afzonderlijke kolom. Deze kolom is standaard opgenomen wanneer u automatisch laadt. Raadpleeg kolom Gegevens uit de noodopvang voor meer informatie.

Standaardwaarde: Geen
timestampFormat

Type: String

De indeling voor het parseren van tijdstempelreeksen.

Standaardwaarde: yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
Uurzonee

Type: String

De java.time.ZoneId die moet worden gebruikt bij het parseren van tijdstempels en datums.

Standaardwaarde: Geen

CSV Opties

Optie
badRecordsPath

Type: String

Het pad voor het opslaan van bestanden voor het vastleggen van de informatie over slechte JSON-records.

Standaardwaarde: Geen
charToEscapeQuoteEscaping

Type: Char

Het teken dat wordt gebruikt om het teken te escapen dat wordt gebruikt voor escape-aanhalingstekens. Bijvoorbeeld voor de volgende record: [ " a\\", b ] :

* Als het teken dat als escape-teken moet worden gebruikt, niet is gedefinieerd, wordt de '\' record niet geparseerd. De parser leest tekens: [a],[\],["],[,],[ ],[b] en geeft een foutmelding omdat er geen afsluitende prijsopgave kan worden gevonden.
* Als het teken dat als escape-teken moet worden gebruikt, wordt gedefinieerd als , wordt de '\''\' record gelezen met 2 waarden: [a\] en [b] .

Standaardwaarde: '\0'
columnNameOfCorruptRecord

Type: String

Een kolom voor het opslaan van records die misvormd zijn en niet kunnen worden geparseerd. Als de mode voor parseren is ingesteld op DROPMALFORMED , is deze kolom leeg.

Standaardwaarde: _corrupt_record
Commentaar

Type: Char

Hiermee definieert u het teken dat een regel opmerking vertegenwoordigt wanneer gevonden in het begin van een regel tekst. Gebruik om '\0' het overslaan van opmerkingen uit te schakelen.

Standaardwaarde: '#'
Dateformat

Type: String

De indeling voor het parseren van datumreeksen.

Standaardwaarde: yyyy-MM-dd
emptyValue

Type: String

Tekenreeksweergave van een lege waarde.

Standaardwaarde: ""
encoding of charset

Type: String

De naam van de codering van de JSON-bestanden. Zie java.nio.charset.Charset voor een lijst met opties. UTF-16 en UTF-32 kunnen niet worden gebruikt wanneer multilinetrue is.

Standaardwaarde: UTF-8
enforceSchema

Type: Boolean

Hiermee wordt aangegeven of het opgegeven of afgeleide schema moet worden toegepast op de CSV-bestanden. Als de optie is ingeschakeld, worden headers van CSV-bestanden genegeerd. Deze optie wordt standaard genegeerd wanneer u automatisch laadt om gegevens op te halen en schemaontwikkeling toe te staan.

Standaardwaarde: true
Ontsnappen

Type: Char

Het escape-teken dat moet worden gebruikt bij het parseren van de gegevens.

Standaardwaarde: '\'
Header

Type: Boolean

Of de CSV-bestanden een header bevatten. Automatisch laden gaat ervan uit dat bestanden headers hebben bij het afleiden van het schema.

Standaardwaarde: false
ignoreLeadingWhiteSpace

Type: Boolean

Of voor elke geparseerde waarde voor vooraanstaande witruimten moeten worden genegeerd.

Standaardwaarde: false
ignoreTrailingWhiteSpace

Type: Boolean

Of u voor elke geparseerde waarde na een witruimte wilt negeren.

Standaardwaarde: false
inferSchema

Type: Boolean

Of u de gegevenstypen van de geparseerde CSV-records wilt afleiden of wilt aannemen dat alle kolommen van StringType zijn. Vereist een extra pass-over-over-de-gegevens als deze zijn ingesteld op true .

Standaardwaarde: false
lineSep

Type: String

Een tekenreeks tussen twee opeenvolgende JSON-records.

Standaardwaarde: Geen, die betrekking heeft \r op \r\n , en \n
landinstelling

Type: String

Een java.util.Locale id. Beïnvloedt de standaarddatum, tijdstempel en decimale parsering binnen de JSON.

Standaardwaarde: US
maxCharsPerColumn

Type: Int

Maximumaantal tekens dat van een waarde moet worden verwacht om te parseren. Kan worden gebruikt om geheugenfouten te voorkomen. De standaardwaarde is -1 , wat onbeperkt betekent.

Standaardwaarde: -1
maxColumns

Type: Int

De harde limiet voor het aantal kolommen dat een record kan hebben.

Standaardwaarde: 20480
mergeSchema

Type: Boolean

Of het schema voor meerdere bestanden moet worden afleiden en of het schema van elk bestand moet worden samengevoegd. Standaard ingeschakeld voor Automatisch laden bij het afleiden van het schema.

Standaardwaarde: false
Modus

Type: String

Parsermodus rond het verwerken van misvormde records. Een van 'PERMISSIVE' ,
'DROPMALFORMED', en 'FAILFAST' .

Standaardwaarde: PERMISSIVE
Multiline

Type: Boolean

Of de JSON-records meerdere regels bespannen.

Standaardwaarde: false
nanValue

Type: String

De tekenreeksweergave van een niet-een-getal-waarde bij het parseren FloatType en DoubleType kolommen.

Standaardwaarde: "NaN"
negativeInf

Type: String

De tekenreeksweergave van negatieve oneindigheid bij het parseren FloatType of DoubleType kolommen.

Standaardwaarde: "-Inf"
nullValue

Type: String

Tekenreeksweergave van een null-waarde.

Standaardwaarde: ""
parserCaseSensitive

Type: Boolean

Tijdens het lezen van bestanden, of kolommen die in de header zijn gedeclareerd, moeten worden uitgelijnd met de schemacase gevoelig. Dit is true standaard voor Automatisch laden. Kolommen die per geval verschillen, worden in de rescuedDataColumn indien ingeschakeld opgelost.

Standaardwaarde: false
positiveInf

Type: String

De tekenreeksweergave van positieve oneindigheid bij het parseren FloatType of DoubleType kolommen.

Standaardwaarde: "Inf"
Citaat

Type: Char

Het teken dat wordt gebruikt voor escape-waarden waarbij het veld scheidingsteken deel uitmaakt van de waarde.

Standaardwaarde: '\'
rescuedDataColumn

Type: String

Of u alle gegevens wilt verzamelen die niet kunnen worden geparseerd als gevolg van: een gegevenstype komt niet overeen en schema komt niet overeen (inclusief kolombevatting) in een afzonderlijke kolom. Deze kolom is standaard opgenomen wanneer u automatisch laadt. Zie kolom Gegevens uit de noodopvang voor meer informatie.

Standaardwaarde: Geen
scheidingstekenof scheidingsteken

Type: String

Het scheidingsteken tussen kolommen.

Standaardwaarde: ","
timestampFormat

Type: String

De indeling voor het parseren van tijdstempelreeksen.

Standaardwaarde: yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
Uurzonee

Type: String

De java.time.ZoneId die moet worden gebruikt bij het parseren van tijdstempels en datums.

Standaardwaarde: Geen
unescapedQuoteHandling

Type: String

De strategie voor het verwerken van niet-aanhalingstekens. Toegestane opties:

* STOP_AT_CLOSING_QUOTE: Als er aanhalingstekens zonder aanhalingstekens in de invoer worden gevonden, verzamelt u het aanhalingsteken en gaat u verder met het parseren van de waarde als een aanhalingsteken tussen aanhalingstekens, totdat er een afsluitende prijsopgave wordt gevonden.
* BACK_TO_DELIMITER : Als er niet-aanhalingstekens in de invoer worden gevonden, kunt u de waarde beschouwen als een waarde zonder aanhalingstekens. Hierdoor verzamelt de parser alle tekens van de huidige geparseerde waarde totdat het scheidingsteken dat is gedefinieerd sep door wordt gevonden. Als er geen scheidingsteken in de waarde wordt gevonden, blijft de parser tekens uit de invoer verzamelen totdat er een scheidingsteken of regel die eindigt, wordt gevonden.
* STOP_AT_DELIMITER : Als er niet-aanhalingstekens in de invoer worden gevonden, kunt u de waarde beschouwen als een waarde zonder aanhalingstekens. Hierdoor verzamelt de parser alle tekens totdat het scheidingsteken dat is gedefinieerd door , of een regel die sep eindigt in de invoer wordt gevonden.
* SKIP_VALUE: Als er niet-aanhalingstekens in de invoer worden gevonden, wordt de inhoud die voor de opgegeven waarde is geparseerd overgeslagen (totdat het volgende scheidingsteken wordt gevonden) en wordt de waarde in nullValue geproduceerd.
* RAISE_ERROR: Als er niet-aanhalingstekens worden gevonden in de invoer, een
TextParsingException wordt geworpen.

Standaardwaarde: STOP_AT_DELIMITER

PARQUET Opties

Optie
datetimeRebaseMode

Type: String

Hiermee bepaalt u de rebasing van de waarden DATE en TIMESTAMP tussen de kalenders Van Nu en Prolance Gregor. Toegestane waarden: EXCEPTIONLEGACY , en
CORRECTED.

Standaardwaarde: LEGACY
int96RebaseMode

Type: String

Hiermee bepaalt u de rebasing van de tijdstempelwaarden van INT96 tussen Deens en Prolance Gregoriaanse kalenders. Toegestane waarden: EXCEPTIONLEGACY , en
CORRECTED.

Standaardwaarde: LEGACY
mergeSchema

Type: Boolean

Of het schema voor meerdere bestanden moet worden afleiden en of het schema van elk bestand moet worden samengevoegd.

Standaardwaarde: false

AVRO Opties

Optie
avroSchema

Type: String

Optioneel schema dat wordt geleverd door een gebruiker in JSON-indeling. Bij het lezen van Avro kan deze optie worden ingesteld op een ontwikkeld schema, dat compatibel maar anders is met het daadwerkelijke Avro-schema. Het deserialisatieschema is consistent met het ontwikkelde schema. Als u bijvoorbeeld een ontwikkeld schema in stelt met één extra kolom met een standaardwaarde, bevat het leesresultaat ook de nieuwe kolom.

Standaardwaarde: Geen
datetimeRebaseMode

Type: String

Hiermee bepaalt u de rebasing van de waarden DATE en TIMESTAMP tussen de kalenders Van Nu en Prolance Gregor. Toegestane waarden: EXCEPTIONLEGACY , en
CORRECTED.

Standaardwaarde: LEGACY

BINARYFILE Opties

Binaire bestanden hebben geen aanvullende configuratieopties.

TEXT Opties

Optie
Codering

Type: String

De naam van de codering van de TEXT-bestanden. Zie java.nio.charset.Charset voor een lijst met opties.

Standaardwaarde: UTF-8
lineSep

Type: String

Een tekenreeks tussen twee opeenvolgende TEXT-records.

Standaardwaarde: Geen, die betrekking heeft \r op , \r\n en \n
wholeText

Type: Boolean

Of een bestand als één record moet worden gelezen.

Standaardwaarde: false

ORC Opties

Optie
mergeSchema

Type: Boolean

Of het schema voor meerdere bestanden moet worden afleiden en of het schema van elk bestand moet worden samengevoegd.

Standaardwaarde: false