2013-04-13 4 views
0

Je dois créer un script perl qui prend en compte 2 paramètres (int runid et int iters) qui vont ensuite remplir une table dans la base de données postgresql en insérant un nombre aléatoire avec le runid associé fois. J'ai ce script simple pour travailler avec DBI, l'interface de base de données la plus utilisée pour perl, cependant, je pense que cela devrait être possible en redirigeant les commandes d'insertion dans l'outil psql pour postgresql. Cependant, je suis confus sur la façon de commencer. Toute aide serait appréciée.piping insertion de commandes dans l'outil psql

+0

DBI est très bien. Pourquoi essayez-vous de passer à vos commandes? Il n'y a rien à gagner de cette façon. (Si vous avez vraiment * à *: Vous pouvez ouvrir un handle de fichier à une commande comme 'open my $ pipe, '| -'," psql ", @options ou die') – amon

+0

Vous pouvez faire les insertions dans une fonction postgresql et vous feriez simplement 'select my_function (1, 100)' à l'intérieur de perl. Si c'est ce que vous voulez réécrire la question –

+0

désolé mais j'essaie de suivre la suggestion d'amon, je suis confus par la façon dont j'appellerais réellement la commande INSERT INTO, serait-ce dans $ pipe? – user1943079

Répondre

2

Vous pouvez aussi utiliser une commande simple SQL avec generate_series():

INSERT INTO tbl (runid, rnd_col) 
SELECT <runid>, (random()*1000)::int 
FROM generate_series(1, <iters>) 

Cette iters insère des lignes avec un nombre integer aléatoire entre 0 et 1000. adapter à vos besoins. Sera plus rapide que n'importe quel script que vous pourriez éventuellement trouver.

De psql:

psql $connection_parameters -c $SQL_from_above