Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Re : Général » Remplir une table avec COPY FROM + valeurs » 05/02/2010 18:22:44
Voilà, j'ai créé une séquence pour mon incrément :
CREATE SEQUENCE line_number_seq;
Comme ça le champ line_number est auto-incrémenté.
Ce n'est pas ce que je voulais, mais bon le résultat est là, et pas trop de temps à perdre avec ce langage...
Mais je reste bloqué sur :
COPY file_in(rowcontent) FROM filepath;
Qui me renvoie une Syntax error.
Si j'avais une requête SELECT du genre :
SELECT * FROM matable WHERE file_name = filepath;
filepath étant encore un paramètre IN, hé bien ça marcherait.
Mais avec COPY, ça marche pô...
Il faut peut-être ajouter des cotes ' quelque part, mais là encore, après cinq essais différents et vains, je ne pige toujours pas la syntaxe.
Help please
#2 Général » Remplir une table avec COPY FROM + valeurs » 05/02/2010 16:41:48
- Delorbe
- Réponses : 2
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 :
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
Pages : 1