Aracılığıyla paylaş


kullanarak yaygın veri yükleme desenleri COPY INTO

Dosya kaynaklarından Delta Lake'e veri yüklemek için kullanmaya COPY INTO yönelik yaygın desenleri öğrenin.

kullanmak COPY INTOiçin birçok seçenek vardır. Bu desenlerle birlikte COPY INTO ile geçici kimlik bilgilerini de kullanabilirsiniz.

Tüm seçeneklerin tam başvurusu için bkz . COPY INTO .

için hedef tablolar oluşturma COPY INTO

COPY INTO mevcut bir Delta tablosunu hedeflemelidir.

CREATE TABLE IF NOT EXISTS my_table
[(col_1 col_1_type, col_2 col_2_type, ...)]
[COMMENT <table-description>]
[TBLPROPERTIES (<table-properties>)];

Databricks Runtime 11.3 LTS ve üzerinde, bu tabloların şemasını ayarlamak, şema evrimini destekleyen biçimler için isteğe bağlıdır. Ayrıntılar için bkz . COPY INTO kullanarak şema çıkarımı ve evrimi.

kullanarak JSON verilerini yükleme COPY INTO

Aşağıdaki örnek, Azure Data Lake Storage 2. Nesil(ADLS 2. Nesil) içindeki beş dosyadan JSON verilerini adlı my_json_dataDelta tablosuna yükler. Bu tablonun yürütülebilmesi için önce COPY INTO oluşturulması gerekir. Herhangi bir veri dosyalardan birinden zaten yüklenmişse, bu dosya için veriler yeniden yüklenmez.

COPY INTO my_json_data
  FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
  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 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
   FILEFORMAT = JSON
   FILES = ('f1.json', 'f2.json', 'f3.json', 'f4.json', 'f5.json')

Kullanarak Avro verilerini yükleme COPY INTO

Aşağıdaki örnek, deyiminin bir parçası olarak ek SQL ifadeleri kullanarak ADLS 2. Nesil'de SELECT Avro verilerini yükler.

COPY INTO my_delta_table
  FROM (SELECT to_date(dt) dt, event as measurement, quantity::double
          FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path')
  FILEFORMAT = AVRO

KULLANARAK CSV dosyalarını yükleme COPY INTO

Aşağıdaki örnek, altındaki abfss://container@storageAccount.dfs.core.windows.net/base/path/folder1 Azure Data Lake Storage 2. Nesil CSV dosyalarını bir Delta tablosuna yükler.

COPY INTO target_table
  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 in 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 target_table
  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'

Kullanarak şema çıkarımı ve evrimi COPY INTO

Bu bölümde, kullanarak COPY INTOyaygın şema çıkarımı ve evrim yapılandırmaları için örnekler sağlanır.

Sözdizimi

COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
FORMAT_OPTIONS ('inferSchema' = 'true', `mergeSchema` = `true`)
COPY_OPTIONS ('mergeSchema' = 'true');

Giriş şemasını ile COPY INTOotomatik olarak çıkarsamak için aşağıdakiler FORMAT_OPTIONS kullanılabilir:

  • inferSchema: Ayrıştırılan kayıtların veri türlerinin çıkarılıp çıkarılmayacağı veya tüm sütunların içinde StringTypeolduğu varsayılıp varsayılmayacağı.

  • mergeSchema: Şemanın birden çok kaynak dosya arasında çıkarılıp çıkarılmayacağı ve her kaynak dosyanın şemasının birleştirilip birleştirmeyeceği.

    Kaynak dosyalar aynı şemaya sahipse, Databricks için varsayılan ayarın mergeSchema FORMAT_OPTIONS (false) kullanılmasını önerir.

COPY_OPTIONS Aşağıdakiler ile COPY INTOhedef şemayı geliştirmek için kullanılabilir:

  • mergeSchema: Giriş şemasına göre hedef Delta tablosunun şemasının geliştirilip geliştirilmeyeceği.

    Giriş şeması ve hedef şema aynıysa, mergeSchema içinde COPY_OPTIONSolabilirfalse.

CSV şemasını çıkarsama ve geliştirme

Aşağıdaki örnek adlı my_pipe_data şemasız bir Delta tablosu oluşturur ve bir üst bilgiyle kanalla ayrılmış CSV'yi yükler.

mergeSchemagiriş dosyalarında FORMAT_OPTIONS üst bilgi veya sınırlayıcı farklılıkları olabileceğinden içindedirtrue.

CREATE TABLE IF NOT EXISTS my_pipe_data;

COPY INTO my_pipe_data
  FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
  FILEFORMAT = CSV
  FORMAT_OPTIONS ('mergeSchema' = 'true',
                  'delimiter' = '|',
                  'header' = 'true')
  COPY_OPTIONS ('mergeSchema' = 'true');

Verileri yüklerken bozuk dosyaları yoksayma

Yüklediğiniz veriler bir bozulma sorunu nedeniyle okunamıyorsa, içinde olarak ayarlanarak ignoreCorruptFiles true FORMAT_OPTIONSbu dosyalar atlanabilir.

Komutun sonucu, sütundaki COPY INTO num_skipped_corrupt_files bozulma nedeniyle kaç dosyanın atlandığını döndürür. Bu ölçüm, Delta tablosunda çalıştırıldıktan DESCRIBE HISTORY sonra altındaki numSkippedCorruptFiles sütunda da gösteriliroperationMetrics.

Bozuk dosyalar tarafından COPY INTOizlenmez, bu nedenle bozulma düzeltilirse sonraki bir çalıştırmada yeniden yüklenebilirler. Modda çalıştırarak COPY INTO VALIDATE hangi dosyaların bozuk olduğunu görebilirsiniz.

COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
[VALIDATE ALL]
FORMAT_OPTIONS ('ignoreCorruptFiles' = 'true')

Not

ignoreCorruptFiles Databricks Runtime 11.3 LTS ve üzerinde kullanılabilir.