copy_file funkcja

Dotyczy:sprawdź, czy zaznaczono tak, sprawdź, czy usługa SQL databricks została oznaczona jako tak Databricks Runtime 18 LTS lub nowsza

Important

Ta funkcja jest dostępna w wersji beta. Administratorzy obszaru roboczego mogą kontrolować dostęp do tej funkcji ze strony Podglądy . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.

Kopiuje plik do docelowej ścieżki i zwraca referencję FILE do skopiowanego pliku. Pomijam destination kopiowanie pliku do pamięci zarządzanej przez Unity Catalog, która konwertuje FILE EXTERNAL referencję na referencję FILE MANAGED .

Składnia

copy_file(file => file
  [, destination => destination ]
  [, if_file_exists_mode => mode ])

Możesz przekazywać argumenty pozycjonalnie lub po imieniu. Po przekazaniu argumentu po imieniu, wszystkie kolejne argumenty muszą być również przekazywane po imieniu. Więcej informacji można znaleźć w artykule wywołanie parametrów o nazwie (nazwane parametry).

Arguments

  • file: Wartość FILE do skopiowania.
  • destination: Opcjonalny STRING z pełną ścieżką docelową pliku, a nie tylko katalog. Po pominięciu pliku jest kopiowany do pamięci zarządzanej przez Unity Catalog, konwertując referencję FILE EXTERNAL w referencję FILE MANAGED .
  • if_file_exists_mode: Opcjonalne STRING , które ustawia zachowanie, gdy plik już istnieje na ścieżce docelowej. Dotyczy tylko przy użyciu argumentu destination . Akceptowane wartości (nierozróżniające wielka litera) to:
    • 'error': To powoduje błąd. Jest to wartość domyślna.
    • 'overwrite': Nadpisuje istniejący plik.
    • 'skip': Pomija kopiowanie i zwraca odwołanie FILE do istniejącego pliku.

Zwroty

Wartość FILE odwołująca się do skopiowanego pliku.

Notatki

  • Pominięcie destination przekształca odwołanie FILE EXTERNAL do FILE MANAGED. Azure Databricks automatycznie stosuje tę konwersję, gdy wstawisz FILE EXTERNAL wartość do kolumnyFILE MANAGED.
  • Jeśli plik już istnieje na ścieżce docelowej, Azure Databricks domyślnie wyświetla błąd, chyba że ustawisz if_file_exists_mode na overwrite lub skip.
  • Jeśli plik źródłowy nie istnieje, Azure Databricks zgłasza błąd. Aby zwrócić NULL zamiast wywołać błąd w obu przypadkach, użyj try_copy_file funkcji.

Typowe warunki błędów

  • COPY_FILE_ERROR.FILE_NOT_EXISTS
  • COPY_FILE_ERROR.FILE_ALREADY_EXISTS
  • COPY_FILE_AUTHORIZATION_ERROR.READ_UNAUTHORIZED
  • COPY_FILE_AUTHORIZATION_ERROR.WRITE_UNAUTHORIZED

Więcej informacji można znaleźć w artykule Condition Error conditions in Azure Databricks.

Examples

Aby skopiować plik z jednego woluminu do drugiego:

SELECT copy_file(
  to_file('/Volumes/source/data/input.csv'),
  destination => '/Volumes/target/data/output.csv'
);

Aby skopiować pliki do woluminu docelowego z nazwą pliku na wiersz:

SELECT copy_file(
  source_file,
  destination => '/Volumes/my_catalog/my_schema/my_volume/processed/' || file_name,
  if_file_exists_mode => 'skip'
)
FROM staging_files;

Aby nadpisać miejsce docelowe, jeśli plik już istnieje:

SELECT copy_file(
  to_file('/Volumes/source/reports/report.pdf'),
  destination => '/Volumes/archive/reports/report.pdf',
  if_file_exists_mode => 'overwrite'
);

Jeśli plik źródłowy nie istnieje, copy_file pojawia się błąd:

SELECT copy_file(deleted_file, destination => '/Volumes/archive/reports/report.pdf');
Error: COPY_FILE_ERROR.FILE_NOT_EXISTS