2009-06-24 7 views
0

PREMIER: Oui, je connais CONCATENATE et CONTINUEIF, mais je ne suis peut-être pas assez intelligent pour comprendre la documentation. Je ne comprends pas comment ils résolvent mon problème. Merci ...Comment éviter les guillemets et les sauts de ligne pour l'importation d'Oracle SQLLoader (sqlldr)?

Je suis dans la position de devoir créer un fichier pour l'importation dans une base de données Oracle au moyen de sqlldr.

Les colonnes doivent être délimitées par "~" (Ne pas demander.) Lors de la création du fichier de fichier, j'ai quelques inquiétudes sur la façon dont sqlldr se comporte par rapport à Quotes and Newlines.

Si simple ligne doit contenir les valeurs de la colonne:

One, Hello~World I "Like" you, and Three 

Comment dois-je sortie ce au fichier? Ma première hypothèse est

One~"Hello~World I "Like" you"~Three 

J'imagine que ce serait facile d'importer FIELDS TERMINATED BY « ~ » OPTIONNELLEMENT ENCLOSED BY « " » spécifié dans le fichier CTL. Ce que je ne sais pas comment gérer sont les citations autour de la Comme quand je crée le fichier au cas où ces être de plus se sont échappés Comment

Bonus supplémentaire question:.?. les champs peuvent contenir des lignes plieuses Si écrit sur « brut » se transformerait en

one~Line 
Break~three 

Y at-il une option dans le fichier CTL que je peut utiliser pour "piquer" ces derniers ensemble? La rupture peut se produire dans différentes colonnes et il peut y avoir plusieurs interruptions par enregistrement ou colonne.

Merci d'avance!

Répondre

1

Après quelques essais ce que je découvre:

Lors de l'utilisation

FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"' 

dans le fichier CTL et une structure de table de

key:number, msg:varchar2 

La bonne façon de gérer les devis et délimiteurs sont

1~Hello World 
2~"Hello~World" 
3~"Hello ""World""" 
4~"Hello~""World""" 

Donc, si les données contiennent le délimiteur, indiquez la valeur entière et remplacez les guillemets dans la valeur par 2 guillemets.

En ce qui concerne les nouvelles lignes, je vais poser cette question dans une autre question.