Comment puis-je écrire une procédure stockée qui importe des données à partir d'un fichier CSV et remplit la table?
postgresql
csv
postgresql-copy
vardhan
la source
la source
Réponses:
Jetez un œil à ce court article .
Solution paraphrasée ici:
Créez votre table:
Copiez les données de votre fichier CSV dans le tableau:
la source
COPY zip_codes FROM '/path/to/csv/ZIP_CODES.txt' DELIMITER ',' CSV HEADER;
postgresql.org/docs/9.1/static/sql-copy.htmlSi vous n'êtes pas autorisé à utiliser
COPY
(qui fonctionne sur le serveur db), vous pouvez utiliser à la\copy
place (qui fonctionne dans le client db). En utilisant le même exemple que Bozhidar Batsov:Créez votre table:
Copiez les données de votre fichier CSV dans le tableau:
Vous pouvez également spécifier les colonnes à lire:
Voir la documentation de COPY :
et notez:
la source
COPY
et\copy
est bien plus que de simples autorisations, et vous ne pouvez pas simplement ajouter un `` pour que cela fonctionne comme par magie. Voir la description (dans le contexte de l'exportation) ici: stackoverflow.com/a/1517692/157957Un moyen rapide de le faire est d'utiliser la bibliothèque pandas Python (la version 0.15 ou supérieure fonctionne mieux). Cela gérera la création des colonnes pour vous - bien qu'évidemment, les choix qu'il fait pour les types de données ne soient pas ce que vous voulez. S'il ne fait pas tout à fait ce que vous voulez, vous pouvez toujours utiliser le code 'create table' généré comme modèle.
Voici un exemple simple:
Et voici un code qui vous montre comment définir diverses options:
la source
if_exists
paramètre peut être défini pour remplacer ou ajouter à une table existante, par exempledf.to_sql("fhrs", engine, if_exists='replace')
df.to_sql()
est vraiment lent, vous pouvez utiliser àd6tstack.utils.pd_to_psql()
partir de d6tstack voir la comparaison des performancesVous pouvez également utiliser pgAdmin, qui propose une interface graphique pour effectuer l'importation. Cela est montré dans ce fil SO . L'avantage d'utiliser pgAdmin est qu'il fonctionne également pour les bases de données distantes.
Tout comme les solutions précédentes, vous devez déjà avoir votre table dans la base de données. Chaque personne a sa propre solution, mais ce que je fais habituellement, c'est ouvrir le CSV dans Excel, copier les en-têtes, coller spécial avec transposition sur une autre feuille de calcul, placer le type de données correspondant dans la colonne suivante, puis simplement copier et coller cela dans un éditeur de texte avec la requête de création de table SQL appropriée comme suit:
la source
La plupart des autres solutions nécessitent ici que vous créiez la table à l'avance / manuellement. Cela peut ne pas être pratique dans certains cas (par exemple, si vous avez beaucoup de colonnes dans la table de destination). Ainsi, l'approche ci-dessous peut être utile.
En fournissant le chemin et le nombre de colonnes de votre fichier csv, vous pouvez utiliser la fonction suivante pour charger votre table dans une table temporaire qui sera nommée comme
target_table
:La ligne supérieure est supposée avoir les noms de colonne.
la source
public
)Comme Paul l'a mentionné, l'importation fonctionne dans pgAdmin:
clic droit sur la table -> importer
sélectionner le fichier local, le format et le codage
voici une capture d'écran de l'interface graphique allemande pgAdmin:
chose similaire que vous pouvez faire avec DbVisualizer (j'ai une licence, je ne suis pas sûr de la version gratuite)
clic droit sur une table -> Importer les données d'une table ...
la source
la source
créer d'abord une table
Utilisez ensuite la commande copy pour copier les détails du tableau:
copiez nom_table (C1, C2, C3 ....)
de 'chemin vers votre fichier csv' délimiteur ',' en-tête csv;
Merci
la source
Utilisez ce code SQL
le mot clé d'en-tête permet au SGBD de savoir que le fichier csv a un en-tête avec des attributs
pour plus d'informations, visitez http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/
la source
Expérience personnelle avec PostgreSQL, toujours en attente d'un moyen plus rapide.
1. Créez d'abord le squelette de la table si le fichier est stocké localement:
2. Lorsque le \ path \ xxx.csv se trouve sur le serveur, postgreSQL n'a pas l'autorisation d'accéder au serveur, vous devrez importer le fichier .csv via la fonctionnalité intégrée pgAdmin.
Cliquez avec le bouton droit sur le nom de la table, choisissez importer.
Si vous rencontrez toujours des problèmes, veuillez consulter ce didacticiel. http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/
la source
Comment importer des données de fichier CSV dans une table PostgreSQL?
pas:
Besoin de connecter la base de données postgresql dans le terminal
Besoin de créer une base de données
Besoin de créer un utilisateur
Connectez-vous avec la base de données
Besoin de créer un schéma
Besoin de créer une table
Importez les données du fichier csv dans postgresql
Trouver les données de table données
la source
À mon humble avis , le moyen le plus pratique est de suivre " Importer des données CSV dans postgresql, la manière confortable ;-) ", en utilisant csvsql de csvkit , qui est un package python installable via pip.
la source
En Python, vous pouvez utiliser ce code pour la création automatique de tables PostgreSQL avec des noms de colonnes:
C'est aussi relativement rapide, je peux importer plus de 3,3 millions de lignes en 4 minutes environ.
la source
Vous pouvez également utiliser pgfutter ou, encore mieux, pgcsv .
pgfutter est assez bogué, je recommande pgcsv.
Voici comment le faire avec pgcsv:
la source
Si vous avez besoin d'un mécanisme simple pour importer du texte / analyser CSV multiligne, vous pouvez utiliser:
DBFiddle Demo
la source
DBeaver Community Edition (dbeaver.io) simplifie la connexion à une base de données, puis importe un fichier CSV pour le télécharger dans une base de données PostgreSQL. Il facilite également l'émission de requêtes, la récupération de données et le téléchargement d'ensembles de résultats au format CSV, JSON, SQL ou d'autres formats de données courants.
Il s'agit d'un outil de base de données multiplateforme FOSS pour les programmeurs SQL, les administrateurs de bases de données et les analystes qui prend en charge toutes les bases de données populaires: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Hive, Presto, etc. Il s'agit d'un concurrent FOSS viable pour TOAD pour Postgres, TOAD pour SQL Server ou Toad pour Oracle.
Je n'ai aucune affiliation avec DBeaver. J'adore le prix (GRATUIT!) Et toutes les fonctionnalités, mais j'aimerais qu'ils ouvrent davantage cette application DBeaver / Eclipse et facilitent l'ajout de widgets d'analyse à DBeaver / Eclipse, plutôt que d'exiger des utilisateurs de payer l'abonnement annuel de 199 $ juste pour créer des graphiques et des diagrammes directement dans l'application. Mes compétences en codage Java sont rouillées et je n'ai pas envie de prendre des semaines pour réapprendre à créer des widgets Eclipse (seulement pour constater que DBeaver a probablement désactivé la possibilité d'ajouter des widgets tiers à DBeaver Community Edition.)
Les utilisateurs avancés de DBeaver qui sont des développeurs Java peuvent-ils fournir des informations sur les étapes de création de widgets d'analyse à ajouter à l'édition communautaire de DBeaver?
la source
Créez une table et disposez des colonnes requises qui sont utilisées pour créer une table dans un fichier csv.
Ouvrez postgres et faites un clic droit sur la table cible que vous souhaitez charger et sélectionnez importer et mettre à jour les étapes suivantes dans la section des options de fichier
Maintenant, parcourez votre fichier dans le nom de fichier
Sélectionnez csv au format
Encodage en ISO_8859_5
Maintenant, allez à Misc. options et vérifiez l'en-tête et cliquez sur importer.
la source
J'ai créé un petit outil qui importe des
csv
fichiers dans PostgreSQL super facile, juste une commande et il créera et remplira les tables, malheureusement, pour le moment, tous les champs créés automatiquement utilisent le type TEXTL'outil peut être trouvé sur https://github.com/eduardonunesp/csv2pg
la source
psql -h 192.168.99.100 -U postgres mydatabase -c "COPY users FROM 'users.csv' DELIMITER ';' CSV"
? Je suppose que la partie où il crée la table est agréable, mais comme chaque champ est du texte, il n'est pas super utile