Comment puis-je tronquer les données à intégrer dans un champ à l'aide de SQL*Loader? (ORA-12899)

À l'aide de Oracle SQL*Loader, je suis en train de charger une colonne qui a une chaîne de longueur variable (lob) dans une autre base de données dans un varchar2(4000) de la colonne dans Oracle. Nous avons des chaînes beaucoup plus de 4000 caractères, mais tout le monde a convenu que ces chaînes peuvent et doivent être tronqué dans la migration (nous avons étudié les données qui va au-delà de 4000 caractères, ce n'est pas significative). Pour ce faire, j'ai précisé que la colonne de cette façon dans le fichier de contrôle:

COMMENTS CHAR(65535) "SUBSTR(:COMMENTS, 1, 4000)",

Toutefois, SQL*Loader toujours rejette toute ligne où cet enregistrement est plus de 4000 caractères dans le fichier de données:

Enregistrement 6484: Rejet - Erreur sur le tableau LOG_COMMENT, la colonne des COMMENTAIRES.
ORA-12899: valeur trop grande pour la colonne COMMENTAIRES (réel: 11477, maximum: 4000)

Enregistrement 31994: Rejet - Erreur sur le tableau LOG_COMMENT, la colonne des COMMENTAIRES.
ORA-12899: valeur trop grande pour la colonne COMMENTAIRES (réel: 16212, maximum: 4000)

Enregistrement 44063: Rejet - Erreur sur le tableau LOG_COMMENT, la colonne des COMMENTAIRES.
ORA-12899: valeur trop grande pour la colonne COMMENTAIRES (réel: 62433, maximum: 4000)

J'ai essayé de prendre un beaucoup plus petit sous-chaîne et toujours la même erreur. Comment puis-je modifier mon fichier de contrôle de tronquer la chaîne de données de plus de 4000 caractères dans un varchar2(4000) de la colonne?

OriginalL'auteur John | 2010-06-30