Comment les données de sortie à partir de iSQL au format de fichier csv _with_ têtes?
Je suis en train d'interroger un Sybase ASA 8 de la base de données avec le iSQL client et d'exporter les résultats de la requête dans un fichier texte au format CSV. Cependant, le en-têtes de colonne ne sont pas exportées dans le fichier. Il n'y a aucune option pour spécifier que, ni dans le iSQL paramètres, ni dans la déclaration de SORTIE.
La requête et de sortie de la déclaration ressemble à ceci:
SELECT * FROM SomeTable;
OUTPUT TO 'C:\temp\sometable.csv' FORMAT ASCII DELIMITED BY ';' QUOTE ''
Le résultat est un fichier comme
1;Miller;Steve;1980-06-28
2;Jones;Martha;1965-11-02
3;Waters;Richard;1979-10-15
alors que j'aimerais avoir
ID;LASTNAME;FIRSTNAME;DOB
1;Miller;Steve;1980-06-28
2;Jones;Martha;1965-11-02
3;Waters;Richard;1979-10-15
Un indice?
Vous devez vous connecter pour publier un commentaire.
J'aurais suggéré de commencer avec une autre déclaration:
et ajouter le
APPEND
option sur votre requête... mais je ne peux pas obtenirAPPEND
de travail (mais je suis en utilisant un ASA 11 moteur).Essayer celui-ci
Il suffit d'ajouter l'option
de votre déclaration et il ajoute une ligne d'en-tête avec les noms de colonne.
La déclaration complète est donc:
Voir sybase documentation.
Oliver,
Si vous utilisez le FORMAT "EXCEL" option, la sortie les lignes avec le nom de la colonne dans la première ligne. Ensuite, une fois que vous obtenez dans excel, vous pouvez l'enregistrer dans un autre format si vous le souhaitez.
Espère que cette aide.
Jeff Gibson
Vous êtes déjà familier avec les options de SORTIE. Il n'existe aucune option qui vous donne ce que vous voulez.
Ok, le problème est le destinataire n'accepte pas la norme des fichiers CSV, il a besoin des points-virgules.
Si vous êtes de script, alors vous êtes mieux d'avoir une sortie dans le format qui est le plus proche de ce dont vous avez besoin, et ensuite awk-ing le fichier de sortie. Très rapide et vous pouvez changer ce que vous avez besoin. Je pense que votre meilleure option est l'ASCII ou format de sortie par défaut, qui fournira des Virgules (pas de virgule) de Valeurs Séparées, dans un caractère ASCII fichier texte, et inclut les en-Têtes de colonne. Ensuite, utiliser une seule commande awk pour convertir les virgules à des points-virgules.
Trouvé une solution plus facile, Placez les en-têtes dans un fichier de dire header.txt ( il va contenir une seule ligne "col_1|col_2|col_3") puis de combiner le fichier d'en-tête et votre sortie de l'exécution du fichier:
Je suis capable d'utiliser le
isql
de commande de sortie cité CSV.Exemple
donne le résultat:
Options de ligne de commande
(copié à partir de la page de man)
-b
: Exécuter isql non interactif en mode batch. Dans ce mode, le isql processus de son entrée standard, s'attendant à une commande SQL par ligne.-dDELIMITER
: Délimite les colonnes avec séparateur.-c
: Sortie les noms des colonnes sur la première ligne. A un effet uniquement avec l'option-d ou -x options.-q
: Envelopper les champs de caractères entre guillemets doubles.Échapper Question
Vous pourriez rencontrer des problèmes si les résultats de la requête contient des guillemets, bien que. Les guillemets ne sont pas échappé correctement, de sorte qu'ils n'entraînent pas valide CSV: