Bonjour à tous,

Jusqu’à présent, je pouvais téléverser des fichiers (environ 100 000 lignes) directement dans ma base de données, en lançant la commande COPY sur un fichier CSV, grâce à psql :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
copy matable (column1, column2, column3, … columnN) from 'monfichier.csv'  delimiter ',' csv header
Seulement, voilà, mon hébergeur a soudainement décidé qu’on ne pourrait plus lancer psql à partir de PHP (exec). Je ne peux pas non plus lancer la commande COPY FROM avec PDO.

Que me reste-t-il comme solution pour importer massivement des données à partir de PHP ?

Générer une méga-requête avec PHP ?

Un massif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
INSERT INTO matable (column1, … columnN) VALUES
    ('value1', … 'valueN'),
    ...
    [100 000 lignes]
    ...
    ('value1', … 'valueN');
est-il envisageable ?

Quelle est la limite théorique de ce genre d’insertions par lot ?

Y a-t-il une meilleure méthode ?

Config : PostgreSQL 8.4, sur serveur Apache (Ubuntu).

Merci d’avance.