comment dire sqlldr de garniture de fuite et les principaux espaces
Je suis en utilisant sqlldr pour charger des données dans lequel certains des champs de fuite et menant des espaces. Est-il un moyen de dire sqlldr d'ignorer ces espaces autres qu'en disant
field "trim(:field)"
?
- En fait, par défaut, sans l'option de
PRESERVE BLANKS
, attaque et de fuite des espaces seront ignorés. Ma question découle du fait que j'ai été à l'aide d'un outil sur le dessus de sqlldr qui génère un fichier ctl qui ajoute laPRESERVE BLANKS
par défaut. - Comme il s'avère, attaque et de fuite des espaces areignored par défaut, mais seulement pour certains types de données. Cependant, certains types, tels que VARCHAR laissera les espaces intacts. Voir le lien ci-dessous csee.umbc.edu/portal/help/oracle8/server.815/a67792/...
Vous devez vous connecter pour publier un commentaire.
champ "trim (champ)" fonctionne très bien dans la plupart des cas, mais je suis venu avec un cas typique où la taille de la colonne est de type char(1), mais les données dans le fichier de contrôle était de " Y " et "trim (champ)" impossible de charger les données.
Après beaucoup de recherches je suis venu pour savoir que la fonction trim() supprime le blanc des espaces de données, mais dans le même temps, ajoute de la valeur null de données à la place des espaces en blanc, de sorte que la longueur de données en exemple ci-dessus sera 2 comme il compte le nombre de valeurs nulles sur le côté gauche de données. Ainsi, les données seront quelque chose comme nullY depuis, la taille de la colonne dans le tableau est inférieure à la taille réelle de ses pas chargé et oracle jette message d'erreur.
Pour surmonter ce problème, j'ai utilisé:
"garniture(null de la garniture (champ))"
Script ci-dessus, la première garnitures les espaces en blanc, et puis de nouveau la garniture null ajouté par le sql loader.
J'espère que les renseignements que j'ai fournis seront utiles à toute personne confrontée au problème comme je l'ai fait.
Je ne pouvais pas résister à ce post que je n'ai pas trouvé de thread de répondre à ce genre de question.
Je sais que c'est un vieux thread, mais je vais le carillon de toute façon.
Comme pour beaucoup de choses, la réponse est "ça dépend". Cela dépend si les données sont au format fixe ou délimité. Si délimité, il dépend aussi de savoir si les fichiers de contrôle utilise en option, entouré PAR la clause. Pour tous les détails sordides, voir l'Oracle SQL*Loader de la documentation. Par exemple, essayez ce lien: http://docs.oracle.com/cd/B28359_01/server.111/b28319/ldr_field_list.htm#i1007768