Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment écrire dans un fichier CSV à l'aide d'Oracle SQL*Plus

[SQLPlus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) est un outil interactif qui est installé avec chaque installation Oracle moderne. SQL Plus vous permet d'aller au-delà des requêtes de base de données standard avec des lots, des scripts et des calculs au-delà de la portée normale d'Oracle.

Il est même possible, comme nous le verrons ci-dessous, de générer des fichiers texte, tels que .csv , en utilisant la sortie d'une requête de base de données particulière.

Lancement de SQL*Plus

En fonction de votre installation Oracle, vous pouvez avoir accès à l'une des nombreuses versions ou "modes" différents dans lesquels exécuter l'application SQL*Plus.

Ligne de commande SQL*Plus

Si vous souhaitez utiliser la SQL*Plus Command-line , vous émettez simplement le sqlplus commande depuis votre shell :

$ sqlplus

Cela tentera de vous connecter au par défaut base de données et vous serez invité à entrer vos informations d'identification pour vous authentifier.

Dans le cas où vous auriez besoin de vous connecter à une autre database ou utilisez un autre user (schema ), essayez ce qui suit, en remplaçant vos propres valeurs si nécessaire :

$ sqlplus schema@//machine.domain:port/database

iSQL*Plus

Si vous y avez accès, vous pouvez utiliser iSQL*Plus , qui est une version basée sur un navigateur de l'outil de ligne de commande SQL*Plus.

Ceci est accompli en visitant simplement l'iSQL*Plus URL pour votre base de données et votre installation. L'URL exacte varie, mais elle est généralement au format suivant :http://machine_name.domain:port/isqlplus

SQL*Plus pour Windows

Si vous utilisez Windows, il existe également une version graphique Windows de SQL*Plus, qui peut généralement être lancée à partir de votre menu Démarrer :Start > Programs > Oracle > Application Development > SQL Plus .

Sortie d'une requête dans un fichier

Maintenant que vous êtes connecté à SQL*Plus, nous pouvons commencer à créer notre fichier.

Modifier la configuration SQL*Plus

La première étape consiste à configurer certains paramètres système SQL*PLus à l'aide de SET déclaration.

Pour cet exemple, nous modifierons manuellement ces paramètres une fois avant notre requête et la génération de fichier, mais si vous le souhaitez, vous pouvez modifier les valeurs par défaut de divers paramètres dans votre User Profile , situé dans le login.sql fichier.

set colsep ,
set headsep off
set pagesize 0
set trimspool on

Vous ne voudrez généralement pas modifier les premiers paramètres, mais nous expliquerons brièvement ce que chacun accomplit.

  • colsep est le caractère de séparation utilisé pour diviser vos colonnes. Pour un .csv fichier, il s'agit d'une simple virgule.
  • headsep est le caractère de séparation de la ligne d'en-tête (si vous en avez besoin). Dans cet exemple, nous ne produisons pas la ligne d'en-tête, nous laisserons donc ce off .
  • pagesize est le nombre de lignes "par page". Il s'agit d'un paramètre un peu archaïque qui est destiné à imprimer sans avoir trop de lignes par page. Avec une valeur de 0 , nous n'utilisons pas de pages puisque nous publions dans un fichier. Si vous choisissez d'afficher l'header ligne, définissez pagesize à un très grand nombre (supérieur au nombre attendu de résultats d'enregistrement dans la requête), de sorte que votre ligne d'en-tête n'apparaîtra qu'une seule fois au lieu d'une seule "par page".
  • trimspool défini sur on supprime simplement les espaces de fin.

Maintenant, les deux derniers paramètres devront être modifiés en fonction de votre requête.

set linesize #
set numwidth #
  • Pour linesize , le # la valeur doit être le nombre total de colonnes de sortie dans votre requête résultante.
  • numwidth est la largeur de colonne (nombre d'espaces de caractères) utilisée lors de la sortie de valeurs numériques.

Commande SPOOL

Remarque :Le SPOOL la commande n'est pas disponible dans la version SQL*Plus basée sur un navigateur, iSQL*Plus . Pour générer des fichiers lors de l'utilisation d'iSQL*Plus, modifiez les paramètres de préférence nécessaires pour sortir directement dans un fichier.

Une fois nos paramètres pris en charge, nous devons maintenant indiquer à SQL*Plus de générer un fichier. Ceci est accompli en utilisant le SPOOL déclaration.

Tandis que SPOOL est actif , SQL*PLus stockera la sortie de toute requête dans le fichier spécifié.

Par conséquent, la prochaine commande à entrer est spool :

spool file_path

Sauter légèrement en avant, après votre requête est insérée, vous devez également arrêter spool donc la sortie du fichier est fermée en utilisant le spool off commande :

spool off

Insérer la requête

La dernière étape après la modification des paramètres et spool est en cours d'exécution consiste à insérer votre requête. Pour notre exemple simple, nous sortons tous les livres de nos books tableau.

SELECT
  title,
  primary_author
FROM
  books;

N'oubliez pas le point-virgule pour fermer votre instruction de requête, puis entrez le spool off susmentionné commande.

Ça y est, vous avez généré un nouveau fichier texte avec les résultats de votre requête en utilisant SQL*Plus.

Astuce :Utiliser un fichier de script

Plutôt que d'entrer manuellement chaque ligne, il est suggéré d'entrer tous les paramètres dans un nouveau fichier de script que vous pouvez exécuter dans SQL*Plus en une seule commande.

Créez un nouveau fichier de script avec le EDIT déclaration :

EDIT file_name

Collez maintenant la liste complète des commandes de script dans votre nouveau fichier et enregistrez. Le contenu complet de notre exemple de script se trouve ci-dessous.

set colsep ,
set headsep off
set pagesize 0
set trimspool on
set linesize 2
set numwidth 5

spool books.csv

SELECT
  title,
  primary_author
FROM
  books;

spool off

Pour exécuter le script, utilisez simplement le @ symbole suivi du nom du fichier :

@file_name

Votre script doit être exécuté et le .csv fichier créé comme prévu.