Bonjour,
Je cherche un moyen de remplir une table :
- file_in(client_id int4, line_number int4, row_content text)
Avec un fichier texte.
La commande COPY FROM me permet d'insérer chaque ligne de mon fichier, dans un enregistrement, plus précisément dans le champ row_content.
Or, je voudrais que les autres champs soient eux aussi remplis avant, pendant ou après (peu importe), avec une valeur fixe : client_id = 1, et un incrément : line_number = i
Je ne sais pas si c'est assez clair...
Voici où j'en suis pour l'instant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| CREATE OR REPLACE FUNCTION import_file_in(clientid int4, filepath text) RETURNS int4 AS $$
DECLARE
nb_lines int4;
i int4;
BEGIN
-- ****************************************************
-- COPY FILE INTO TABLE
-- ****************************************************
-- Empty table
TRUNCATE file_in;
-- Copy file content
COPY file_in(rowcontent) FROM filepath;
-- Update table with given params
UPDATE file_in SET client_id = clientid;
-- Count number of lines
SELECT INTO nb_lines COUNT(*) FROM file_in;
RETURN nb_lines;
END;
$$ LANGUAGE plpgsql; |
Déjà, j'ai une Syntax Error sur :
COPY file_in(rowcontent) FROM filepath;
Bon, pour ne pas rester bloqué bêtement je remplace ça par une valeur fixe entre cotes : 'c:/test.txt'
Ensuite, je sèche pour ajouter mon incrément line_number...
Une idée svp?
Merci d'avance
Partager