Utiliser PostgreSQL pour masser des données pour Siebel EIM
Récemment, j'avais besoin d'un client Siebel Clinical Trial Management System (CTMS) pour charger des données dans la base de données, clairement sous la responsabilité de Siebel Enterprise Integration Manager (EIM). Le client m'a envoyé les données dans une feuille de calcul, et cela ressemblait à ceci:
Site_Number | Contact_ID | Role |
800,1,300,500 | 1-2ASW | Pharmacien |
6, 7,2 | 1-4RSW | Doctor |
1,2,4,6,7,8 | 1-5E33 | CRA de tête |
Pour utiliser SQL Loader données dans les tables EIM (dans une base de données Oracle), j'avais besoin de masser les données dans un formulaire qui ressemble à ceci:
Site_Number | Contact_ID | Role |
800 | 1-2ASW [19659004] Pharmacien | |
1 | 1-2ASW | pharmacien |
300 | 1-2ASW | pharmacien |
500 | 1-2ASW | pharmacien |
6 [19659003] 1-4RSW | Docteur | |
7 | 1-4RSW | Docteur |
2 | 1-4RSW | Docteur |
6,7,2 | 1-4RSW | Doctor |
1 | 1-5E33 | CRA de référence |
2 | 1-5E33 | CRA de référence |
4 | 1-5E33 [1 9659004] CRA en chef | |
6 | 1-5E33 | CRA en chef |
7 | 1-5E33 | CRA en chef |
8 | 1-5E33 | ARC principale [19659014] Mais comment puis-je le faire? Entrez open source PostgreSQL 10! La première étape consiste à enregistrer le fichier Excel en tant que fichier CSV. La deuxième étape consiste à lancer cette instruction dans PostgreSQL: CREATE FOREIGN TABLE aft_staging Contact_id text, Role text) Server pglog OPTIONS (nom de fichier '/Users/reneschmidt/inputfile.csv', format 'csv', en-tête 'true'); me faire des instructions SQL à partir de PostgreSQL en utilisant des données qui sont un fichier externe. Ainsi, par exemple, je peux émettre cette commande; select * from customer_staging: L'étape suivante consiste à utiliser la fonction super pratique pour transformer les données: select contact_id, person_role, ltrim (unnest (string_to_array ( site_number, ','))) from customer_staging; La dernière étape consiste à exporter les données. Je l'ai fait en lançant cette commande: copy (sélectionnez contact_id, person_role, ltrim (unnest (string_to_array (site_number, ','))) site de customer_staging) TO '/Users/reneschmidt/outputfile.csv WITH WITH FORMAT CSV); L'ouverture du fichier montre ceci:
Source link |