Dans certains cas, il peut être nécessaire d’écrire les données stockées dans les bases de données traditionnelles dans des fichiers XML. Dans Oracale, il existe quelques fonctions XML pour ce sujet, cependant, dans cet article, nous discuterons de la méthode alternative pour convertir une table stockée dans une base de données Oracle au format XML dans une base de données Oracle et l’exporter sous forme de fichier XML, sans utiliser les fonctions XML d’Oracle.
Vous pouvez utiliser cette méthode dans les procédures stockées dans Oracle. Supposons que nous ayons une table appelée Customer, qui comporte les colonnes suivantes :
CREATE TABLE customer
(
id NUMBER,
first_name VARCHAR2(100),
last_name VARCHAR2(100),
birth_date DATE,
gender VARCHAR2(1)
)
Tout d’abord, nous devons convertir les données du tableau au format XML. Nous devons créer une chaîne en concaténant les colonnes du tableau entre les balises au format XML dans la requête SQL. Nous pouvons écrire ces données formatées dans une autre table pour le stockage et l’exportation.
Voici un exemple:
CREATE TABLE customer_xml
(
created_date DATE,
row_num NUMBER,
xml_data VARCHAR2(4000)
);
INSERT INTO customer_xml
(created_date,
row_num,
xml_data)
SELECT c.created_date,
c.row_num,
CASE
WHEN c.row_num = 1 THEN
'<?xml version="1.0" encoding="UTF-8"?><root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'
ELSE
''
END ||
'<id>' || TO_CHAR(id) || '</id>' ||
'<first_name>' || first_name || '</first_name>' ||
'<last_name>' || last_name || '</last_name>' ||
'<birth_date>' || TO_CHAR(birth_date, 'YYYY-MM-DD') || '</birth_date>' ||
'<gender>' || gender || '</gender>' ||
CASE
WHEN c.row_num = rc.row_count THEN
'</root>'
ELSE
''
END AS xml_data
FROM (SELECT TRUNC(SYSDATE) AS created_date,
c.*,
ROW_NUMBER() OVER(ORDER BY c.id) AS row_num
FROM customer c) c
LEFT JOIN (SELECT TRUNC(SYSDATE) AS created_date,
COUNT(*) AS row_count
FROM customer c) rc
ON c.created_date = rc.created_date;
COMMIT;
Une fois les données au format XML insérées dans le tableau, nous pouvons exporter le fichier avec l’extension XML. Pour ce faire, nous pouvons utiliser le package UTL_FILE dans Oracle. Pour exporter les données de la table customer_xml, nous pouvons utiliser la fonction UTF_FILE.fopen_nchar. Pour créer un fichier XML, il suffit d’ajouter l’extension « .xml » à la fin du paramètre de nom de fichier.
Après cela, le fichier XML sera créé à l’emplacement spécifié dans la fonction UTL_FILE :
BEGIN
fo := UTL_FILE.fopen_nchar (location, filename || '.xml', 'w', 32767);
FOR c1 IN (SELECT xml_data
FROM customer_xml
ORDER BY row_num)
LOOP
UTL_FILE.put_line_nchar (fo, C1.xml_data);
END LOOP;
UTL_FILE.fclose (fo);
END;
Ça y est …! Qu’est-ce que tu penses? S’il vous plaît partager dans les commentaires ci-dessous.