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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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