Je dois formater le fichier de sortie csv à partir d'une requête sqlplus. Les champs de sortie char et varchar apparaissent dans la taille de la colonne max dans la table, ce qui signifie que beaucoup de colonnes ont des espaces supplémentaires, plus la virgule séparatrice. Comment puis-je me débarrasser des espaces supplémentaires dans mon fichier csv? Comment puis-je obtenir "" autour des champs numériques?Format de sortie csv de sqlplus exécuté dans un script Unix
Répondre
Vous pouvez vous débarrasser des principaux/espaces de fin en utilisant la fonction garniture:
http://www.adp-gmbh.ch/ora/sql/trim.html
SELECT TRIM(col) FROM table;
Je ne sais pas pourquoi vous obtenez des guillemets autour des champs numériques: probablement quelque chose à voir avec la façon dont vous êtes concaténant des colonnes ensemble? Comme l'a demandé D.Shawley, il serait utile de publier ici un exemple de code SQL que vous utilisez pour générer votre fichier CSV.
Vous devrez concaténer les champs ensemble, et ajouter les guillemets vous-même. Aussi, n'oubliez pas d'échapper les guillemets doubles dans vos données. Les guillemets doubles ne sont pas strictement nécessaires sauf si vos données contiennent des virgules ou des guillemets, mais cela ne fait pas de mal de les ajouter.
SELECT '"' || numcol || '",',
'"' || REPLACE(strcol0, '"', '""') || '",',
'"' || REPLACE(strcol1, '"', '""') || '"'
FROM some_table;
Avant d'exécuter ceci, vous voudrez probablement désactiver les en-têtes et les commentaires, puis les spouler dans un fichier.
SQL> set heading off
SQL> set feedback off
SQL> set pagesize 0
SQL> spool output.csv
SQL> SELECT ... FROM ...;
SQL> spool off
- 1. Comment capturer un code de sortie SQLPlus dans un script shell?
- 2. Format de l'heure stat UNIX
- 3. Afficher la sortie Dynamic EXECUTE dans pl/sql De sqlplus
- 4. Existe-t-il un moyen de rendre la sortie PrintWriter au format UNIX?
- 5. Format de date CSV
- 6. redirection de sortie sous UNIX
- 7. Réponse Type de contenu au format CSV
- 8. stocke la sortie d'un objet curseur au format csv
- 9. Script Bash: spécifiez le format du numéro de sortie bc.
- 10. Je veux copier la sortie d'unix et sqlplus dans un fichier
- 11. UNIX Importation GRAND csv dans SQLite
- 12. Sous-chaîne Unix dans un script shell?
- 13. Dans quel format dois-je sauvegarder ma sortie de script python?
- 14. Définition de variable SQLPlus
- 15. SUPER CSV écriture haricots au format CSV
- 16. script shell non exécuté
- 17. Extrait de date de script UNIX
- 18. SqlPlus ne se terminant pas un script SQL
- 19. Unix ksh sqlplus afficher zéro pour les nombres décimaux
- 20. Comment contrôler le format de sortie d'une date lors de l'écriture d'un fichier CSV avec FileHelpers?
- 21. requête MySQL pour imprimer la sortie au format CSV sortie standard
- 22. Script Unix à rechercher dans un fichier .gz compressé
- 23. Sortie du script shell au format html + e-mail html
- 24. Script SQLplus pour mettre en forme le texte comme numérique
- 25. Script Python exécuté avec Makefile
- 26. question sur la sortie de dig UNIX
- 27. script exécuté problème ProcessBuilder sh
- 28. Oracle-sqlplus
- 29. données au format CSV Spoule tronque
- 30. Oracle SQLPlus: format de soulignement lors de la somme sur plusieurs colonnes
Notez bien ce que vous demandez ici, mais un bon début serait d'inclure quelques exemples d'extraits de données. Passer de l'entrée à la sortie sur un flux de texte implique généralement un usage sédatif ou awk intéressant. Mais nous avons besoin de voir un exemple de ce que sqlplus génère et ce que vous voulez dans la sortie. Cela ressemble à un bon travail pour sed, awk, ou perl. –