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

Au lieu d'un URI d'emplacement de banque d'objets, vous pouvez spécifier 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 spécifier 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 tient pas compte de la casse. Ce nom de fichier 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, lorsque vous appelez DBMS_CLOUD.COPY_DATA, utilisez le paramètre file_uri_list pour indiquer les fichiers d'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 un caractère générique pour plusieurs caractères et le caractère " ?" peut être utilisé comme un caractère générique pour 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'. Cela indique que filename commence par un guillemet (').

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

Remarques sur 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 pour les 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 DBMS_CLOUD Package Format Options.

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