Insérer une image dans une base de données postgresql
Je voudrais savoir Comment puis-je insérer une image "bytea" dans une table de ma base de données postgreSql? J'ai cherché des forums pendant des heures et avoir vu la même question posté des dizaines de fois, mais encore de trouver une réponse unique. Tout ce que je vois est de savoir comment insérer .les jpeg dans une ancienne colonne qui n'est pas ce dont j'ai besoin.
Voici la table de base de données:
create table category (
"id_category" SERIAL,
"category_name" TEXT,
"category_image" bytea,
constraint id_cat_pkey primary key ("id_category"))without oids;
et quand j'ajoute une nouvelle ligne, il ne fonctionne pas :
insert into category(category_name,category_image) values('tablette', lo_import('D:\image.jpg'));
L'utilisation d'un langage de programmation pour extraire le contenu du fichier, ou si vous ne pouvez pas et vous êtes super-utilisateur, et le fichier est sur le serveur, reportez-vous à Comment insérer (fichier) en données PostgreSQL bytea colonne sur dba.se
Il est généralement préférable d'enregistrer l'image dans un fichier sur le disque et qu'à stocker une référence dans la base de données.
Qui langage de programmation et le pilote client utilisez-vous? Aussi,
Nilsson: comment puis-je enregistrer l'image en tant que o fichier sur le disque et comment puis-je stocker la référence dans ma base de données?
J'ai utilisé l'outil de pgAdmin III pour créer et remplir ma base de données postgreSql
Il est généralement préférable d'enregistrer l'image dans un fichier sur le disque et qu'à stocker une référence dans la base de données.
Qui langage de programmation et le pilote client utilisez-vous? Aussi,
lo_import
n'est pas pour bytea
champs, c'est pour les grands objets (lob
, pg_largeobject
), par la documentation.Nilsson: comment puis-je enregistrer l'image en tant que o fichier sur le disque et comment puis-je stocker la référence dans ma base de données?
J'ai utilisé l'outil de pgAdmin III pour créer et remplir ma base de données postgreSql
OriginalL'auteur Sarra | 2014-03-09
Vous devez vous connecter pour publier un commentaire.
La solution ci-dessus fonctionne si la colonne est de type bytea
La solution ci-dessus fonctionne si la colonne est de type oid c'est à dire, Blob
Ci-dessus décoder prise de fonction de deux paramètres. Premier paramètre est HexString de l'Image.Le deuxième paramètre est hex par défaut.Décoder la fonction convertit la hexString d'octets et de les stocker dans bytea colonne de type de données dans postgresql.
bytea('D:\image.jpg')
sera pas lecture de l'image à partir du fichier spécifié. Simplement, il convertit la chaîne de caractères constante'D:\image.jpg'
à sa représentation binaire.insérez dans la catégorie(category_name,category_image) values('tablette', 'R0lGODlhmgDAAIcAAAgICAGAAY8ZGQAAgiqcfykehxrgekvkf73d');
Convertir l'image en base64 encode la chaîne et de coller. Je viens de donner un exemple simple ci-dessus. Toutefois, il a travaillé pour moi si les données de la colonne est de type oid.
Est il possible que je peux insérer un fichier en lui donnant le chemin d'accès et pas
'D:\image.jpg'
en binaire ?insérez dans la catégorie(category_name,category_image) values('tablette', lo_import('D:\image.jpg'));
OriginalL'auteur Ravi