Chargement de données à partir de répertoires dans Autonomous Database

Au lieu d'un URI d'emplacement de banque d'objets, vous pouvez indiquer un répertoire avec des procédures DBMS_CLOUD pour charger ou décharger des données à partir de fichiers dans un répertoire local, y compris des répertoires créés sur des systèmes de fichiers réseau attachés.

Les procédures suivantes prennent en charge la spécification de fichiers dans un répertoire avec le paramètre file_uri_list :

  • DBMS_CLOUD.COPY_COLLECTION
  • DBMS_CLOUD.COPY_DATA
  • DBMS_CLOUD.CREATE_EXTERNAL_TABLE

Les procédures suivantes prennent en charge la spécification de fichiers dans un répertoire avec le paramètre partitioning_clause :

  • DBMS_CLOUD.CREATE_EXTERNAL_TABLE
  • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE

Vous pouvez indiquer un répertoire et un ou plusieurs noms de fichier ou utiliser une liste de répertoires et de noms de fichier séparés par des virgules. Le format pour indiquer un répertoire est :'MY_DIR:filename.ext'. Par défaut, le nom de répertoire MY_DIR est un objet de base de données et ne fait pas la distinction entre les majuscules et les minuscules. Ce nom distingue les majuscules des minuscules.

Lorsque vous utilisez le paramètre file_uri_list pour indiquer un répertoire, vous n'avez pas besoin d'inclure le paramètre credential_name, mais vous avez besoin de privilèges objet READ sur le répertoire.

Par exemple, avec un appel vers DBMS_CLOUD.COPY_DATA, utilisez le paramètre file_uri_list pour indiquer des fichiers dans un répertoire :

BEGIN
  DBMS_CLOUD.COPY_DATA(
     table_name => 'HRDATA1',
     file_uri_list => 'HR_DIR:test.csv',
     format => JSON_OBJECT('type' value 'csv')  );
END;
/

Cet exemple copie les données de test.csv dans le répertoire local HR_DIR vers la table HRDATA1.

Les expressions régulières ne sont pas prises en charge lors de la spécification des noms de fichier dans un répertoire. Vous pouvez uniquement utiliser des caractères génériques pour indiquer des noms de fichier dans un répertoire. Le caractère "*" peut être utilisé comme caractère générique pour représenter plusieurs caractères, et le caractère " ?" peut être utilisé comme caractère générique pour représenter un seul caractère. Par exemple :'MY_DIR:*" ou 'MY_DIR:test?'

Pour spécifier plusieurs répertoires, utilisez une liste de répertoires séparés par des virgules : par exemple :'MY_DIR1:*, MY_DIR2:test?'

Utilisez des guillemets doubles pour indiquer un nom de répertoire sensible à la casse. Par exemple :'"my_dir1":*, "my_dir2":Test?'

Pour inclure un guillemet, utilisez deux guillemets. Par exemple : 'MY_DIR:''filename.ext'. Indique que filename commence par un guillemet (').

Pour plus d'informations sur l'attachement de systèmes de fichiers réseau à Autonomous Database, reportez-vous à Attachement d'un système de fichiers réseau à Autonomous Database.

Remarques relatives à l'utilisation des répertoires avec les procédures DBMS_CLOUD

Lorsque vous utilisez des procédures DBMS_CLOUD et que vous indiquez un répertoire avec le paramètre file_uri_list, tenez compte des points suivants :

  • Les options de compression des fichiers tels que GZIP ne sont pas prises en charge pour les fichiers de répertoire. Pour plus d'informations, reportez-vous à l'option de format compression dans Options de format de package DBMS_CLOUD.

  • Les caractères spéciaux tels que les deux-points ( :), les guillemets simples (') et les virgules (,) ne sont pas pris en charge dans le nom du répertoire.