COPY INTO

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Ładuje dane z lokalizacji pliku do tabeli Delta. Jest to operacja z możliwością ponawiania i idempotentna. Pliki w lokalizacji źródłowej, które zostały już załadowane, są pomijane. Jest to prawdą, nawet jeśli pliki zostały zmodyfikowane od czasu ich załadowania. Aby zapoznać się z przykładami, zobacz Typowe wzorce ładowania danych przy użyciu COPY INTO.

Składnia

COPY INTO target_table [ BY POSITION | ( col_name [ , <col_name> ... ] ) ]
  FROM { source_clause |
         ( SELECT expression_list FROM source_clause ) }
  FILEFORMAT = data_source
  [ VALIDATE [ ALL | num_rows ROWS ] ]
  [ FILES = ( file_name [, ...] ) | PATTERN = glob_pattern ]
  [ FORMAT_OPTIONS ( { data_source_reader_option = value } [, ...] ) ]
  [ COPY_OPTIONS ( { copy_option = value } [, ...] ) ]

source_clause
  source [ WITH ( [ CREDENTIAL { credential_name |
                                 (temporary_credential_options) } ]
                  [ ENCRYPTION (encryption_options) ] ) ]

Parametry

  • target_table

    Identyfikuje istniejącą tabelę delty. target_table nie może zawierać specyfikacji czasowej ani opcji.

    Jeśli nazwa tabeli jest podana w postaci lokalizacji, takiej jak: delta.`/path/to/table` , Unity Catalog zarządza dostępem do lokalizacji, do których są zapisywane. Możesz zapisać w zewnętrznej lokalizacji, robiąc to tak:

    • Definiowanie lokalizacji jako lokalizacji zewnętrznej i posiadanie WRITE FILES uprawnień do tej lokalizacji zewnętrznej.
    • Posiadanie WRITE FILES uprawnień do nazwanego poświadczenia składowania, które zapewniają autoryzację do zapisu w lokalizacji przy użyciu: COPY INTO delta.`/some/location` WITH (CREDENTIAL <named-credential>)

    Aby uzyskać więcej informacji, zobacz Połączenie z magazynem obiektów w chmurze przy użyciu Unity Catalog.

  • BY POSITION | ( col_name [ , <col_name> ... ] )

    Dopasuj kolumny źródłowe do kolumn tabeli docelowej według pozycji porządkowej. Rzutowanie dopasowanych kolumn odbywa się automatycznie.

    Ten parametr jest obsługiwany tylko w przypadku formatu pliku CSV bez nagłówka. Musisz określić wartość FILEFORMAT = CSV. Należy również ustawić FORMAT_OPTIONS na ("headers" = "false") (FORMAT_OPTIONS ("headers" = "false") jest wartością domyślną).

    Opcja składni 1: BY POSITION

    • Automatycznie dopasuje kolumny źródłowe do kolumn tabeli docelowej według pozycji porządkowej.
      • Domyślne dopasowanie nazw nie jest używane do porównywania.
      • Kolumny IDENTITY oraz GENERATED tabeli docelowej są ignorowane podczas dopasowywania do kolumn źródłowych.
      • Jeśli liczba kolumn źródłowych nie jest równa filtrowanej kolumnie tabeli docelowej, COPY INTO zgłasza błąd.

    Opcja składni 2: ( col_name [ , <col_name> ... ] )

    • Dopasuje kolumny źródłowe do określonych kolumn tabeli docelowej według względnej pozycji porządkowej przy użyciu listy nazw kolumn tabeli docelowej w nawiasach rozdzielonych przecinkami.
      • Oryginalna kolejność kolumn tabeli i nazwy kolumn nie są używane do dopasowywania.
      • Nie można określać kolumn IDENTITY oraz kolumn GENERATED na liście nazw kolumn, ponieważ COPY INTO zgłosi błąd.
      • Nie można zduplikować określonych kolumn.
      • Gdy liczba kolumn źródłowych nie jest równa określonej kolumnie tabeli, COPY INTO zgłasza błąd.
      • W przypadku kolumn, które nie są określone na liście nazw kolumn, COPY INTO przypisuje wartości domyślne, jeśli istnieją, i przypisuje NULL w przeciwnym razie. Jeśli żadna kolumna nie może zawierać wartości null, COPY INTO zgłasza błąd.
  • source

    Lokalizacja pliku do załadowania danych. Pliki w tej lokalizacji muszą mieć format określony w pliku FILEFORMAT. Lokalizacja jest udostępniana w postaci identyfikatora URI.

    Dostęp do lokalizacji źródłowej można zapewnić za pośrednictwem:

    • credential_name

      Opcjonalna nazwa poświadczenia używanego do uzyskiwania dostępu do lokalizacji magazynu lub zapisywania do tej lokalizacji. To poświadczenie jest używane tylko wtedy, gdy lokalizacja pliku nie jest uwzględniona w lokalizacji zewnętrznej. Zobacz credential_name.

    • Wbudowane poświadczenia tymczasowe.

    • Definiowanie lokalizacji jako zewnętrznej i posiadanie READ FILES uprawnień do lokalizacji zewnętrznej za pośrednictwem Unity Catalog.
    • Używanie nazwanego poświadczenia dostępu do magazynu z uprawnieniami READ FILES, które zapewniają autoryzację uprawniającą do odczytu danych z lokalizacji za pośrednictwem Unity Catalog.

    Nie musisz podawać poświadczeń wbudowanych ani nazwanych, jeśli ścieżka jest już zdefiniowana jako lokalizacja zewnętrzna, której masz uprawnienia do użycia. Aby uzyskać więcej informacji, zobacz Omówienie lokalizacji zewnętrznych .

    Uwaga

    Jeśli ścieżka pliku źródłowego jest ścieżką główną, dodaj ukośnik (/) na końcu ścieżki pliku, na przykład s3://my-bucket/.

    Zaakceptowane opcje poświadczeń to:

    • AZURE_SAS_TOKEN dla usług ADLS i Azure Blob Storage
    • AWS_ACCESS_KEY, AWS_SECRET_KEYi AWS_SESSION_TOKEN dla platformy AWS S3

    Zaakceptowane opcje szyfrowania to:

    • TYPE = 'AWS_SSE_C'i MASTER_KEY dla platformy AWS S3

Zobacz Ładowanie danych przy użyciu COPY INTO z poświadczeniami tymczasowymi.

  • SELECT expression_list

    Wybiera określone kolumny lub wyrażenia z danych źródłowych przed skopiowaniem do tabeli delty. Wyrażenia mogą być dowolnymi, które używasz z instrukcjami SELECT, w tym w operacjach okien. Wyrażeń agregacji można używać tylko dla agregacji globalnych — nie można stosować GROUP BY na kolumnach z tą składnią.

  • FILEFORMAT = data_source

    Format plików źródłowych do załadowania. Jeden z CSV, JSON, AVRO, ORC, PARQUET, TEXT, BINARYFILE.

  • VALIDATE

    Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 10.4 LTS i nowsze

    Dane, które mają zostać załadowane do tabeli, są weryfikowane, ale nie są zapisywane w tabeli. Te walidacje obejmują:

    • Czy dane mogą być analizowane.
    • Określa, czy schemat jest zgodny z tabelą, czy też schemat musi zostać rozwinięty.
    • Czy są spełnione wszystkie ograniczenia dotyczące możliwości przechowywania wartości null i sprawdzania.

    Wartością domyślną jest zweryfikowanie wszystkich danych, które mają zostać załadowane. Możesz podać liczbę wierszy do zweryfikowania za pomocą słowa kluczowego ROWS , takiego jak VALIDATE 15 ROWS. Instrukcja COPY INTO zwraca podgląd danych z maksymalnie 50 wierszy, gdy z ROWS słowem kluczowym używa się liczby mniejszej niż 50.

  • FILES

    Lista nazw plików do załadowania z limitem 1000 plików. Nie można określić za pomocą PATTERN.

  • PATTERN

    Wzorzec glob, który identyfikuje pliki do wczytania z katalogu źródłowego. Nie można określić za pomocą FILES.

    Wzorzec opis
    ? Pasuje do dowolnego pojedynczego znaku
    * Dopasuje zero bądź więcej znaków
    [abc] Dopasuje pojedynczy znak z zestawu znaków {a,b,c}.
    [a-z] Dopasuje pojedynczy znak z zakresu znaków {a... z}.
    [^a] Dopasuje pojedynczy znak, który nie pochodzi z zestawu znaków lub zakresu {a}. Należy pamiętać, że ^ znak musi występować natychmiast po prawej stronie nawiasu otwierającego.
    {ab,cd} Dopasuje ciąg z zestawu ciągów {ab, cd}.
    {ab,c{de, fh}} Dopasuje ciąg z zestawu ciągów {ab, cde, cfh}.
  • FORMAT_OPTIONS

    Opcje, które mają zostać przekazane do czytnika źródła danych platformy Apache Spark dla określonego formatu. Zobacz Opcje formatowania dla każdego formatu pliku.

  • COPY_OPTIONS

    Opcje sterowania operacją COPY INTO polecenia.

    • force: wartość logiczna, domyślna false. Jeśli ustawiono wartość true, idempotencyjność jest wyłączona, a pliki są ładowane niezależnie od tego, czy zostały załadowane wcześniej.
    • mergeSchema: wartość logiczna, domyślna false. Jeśli wartość jest ustawiona na true, schemat można ewoluować zgodnie z danymi przychodzącymi.

Wywołaj COPY INTO równocześnie

COPY INTO obsługuje współbieżne wywołania względem tej samej tabeli. Tak długo, jak COPY INTO jest wywoływany współbieżnie w różnych zestawach plików wejściowych, każde wywołanie powinno ostatecznie zakończyć się powodzeniem, w przeciwnym razie występuje konflikt transakcji. COPY INTO nie powinny być wywoływane współbieżnie w celu zwiększenia wydajności; Pojedyncze COPY INTO polecenie z wieloma plikami zwykle działa lepiej niż uruchamianie współbieżnych COPY INTO poleceń z jednym plikiem. COPY INTO można wywoływać współbieżnie, gdy:

  • Wielu producentów danych nie ma łatwego sposobu koordynowania i nie może utworzyć pojedynczego wywołania.
  • W przypadku bardzo dużego katalogu można go przetwarzać po jednym podkatalogu na raz. Podczas pozyskiwania katalogów z bardzo dużą liczbą plików usługa Databricks zaleca korzystanie z Auto Loader, jeśli jest to możliwe.

Uzyskiwanie dostępu do metadanych pliku

Aby dowiedzieć się, jak uzyskać dostęp do metadanych dla źródeł danych opartych na plikach, zobacz Kolumna metadanych pliku.

Opcje formatowania

Aby uzyskać opcje specyficzne dla każdego formatu pliku (JSON, CSV, XML, Parquet, Avro, text, ORC i binary), zobacz Opcje elementu DataFrameReader.