PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 19/08/2016 14:49:43

chaugab
Membre

Importer fichier .json

Bonjour, je suis nouveau sur le forum, je viens de m'inscrire, car je ne trouve pas de solution pour importer le contenu d'un fichier .json dans ma base de données. Le but de l'opération est d'importer des points (coordonnées géospatiales) à partir de logs, les stocker dans la base pg et en suite convertir tout ça en shapefile.

J'ai bien pris connaissance de ceci
https://www.postgresql.org/docs/9.3/sta … -json.html
http://docs.postgresqlfr.org/9.6/datatype-json.html
http://www.postgresqltutorial.com/postgresql-json/
http://blog.endpoint.com/2016/02/conver … alues.html

et de plein d'autres tutos et forums mais je ne vois toujours pas comment j'indique l'emplacement de mon fichier .json à lire
Si quelqu'un sait comment faire, ça serait génial!
Merci

Hors ligne

#2 19/08/2016 15:36:33

rjuju
Administrateur

Re : Importer fichier .json

Il manque un peu de contexte pour donner une réponse détaillée, mais vous pouvez par exemple faire :

COPY ma_table(mon_champ_json) FROM '/chemin/vers/fichier.json';

(si le fichier est sur le serveur, utilisez \copy si le fichier est disponible en local)

Hors ligne

#3 19/08/2016 16:07:04

chaugab
Membre

Re : Importer fichier .json

MERCI BEAUCOUP! Je vais enfin pouvoir avancer smile

Hors ligne

#4 23/08/2016 11:23:58

chaugab
Membre

Re : Importer fichier .json

Bon voilà, j'essayé d'extraire les coordonnées ci-dessous. J'ai importé tout le fichier json avec

create table field(data json);
COPY field(data) FROM '/home/guest-pc5/field.json';

Le contenu du fichier :

{"vertices":[{"lat":46.744628268759314,"lon":6.569952920654968},
	     {"lat":46.74441692818192,"lon":6.570487107359068},
	     {"lat":46.74426116111054,"lon":6.570355867853787},
	     {"lat":46.74447250168793,"lon":6.569821681149689}],
"name":"demo-field",
"cropType":"sugarbeet",
"cropPlantDistance":0.18000000715255737,
"rowDistance":0.5,
"numberOfRows":[28,12,12],
"seedingDate":"2016-08-17T07:39+00:00"}

Maintenant, je veux seulement récupérer les champs "vertices" pour les mettre dans une table que je souhaite utiliser dans geoserver.

J'ai essayé d'utiliser les fonctions de la doc mais rien à faire...

Dernière modification par chaugab (23/08/2016 14:35:33)

Hors ligne

#5 23/08/2016 11:44:55

gleu
Administrateur

Re : Importer fichier .json

Et ça donne quoi comme requête avec quoi comme résultat ?


Guillaume.

Hors ligne

#6 23/08/2016 14:17:54

chaugab
Membre

Re : Importer fichier .json

j'ai trouvé comment selectionner mon tableau!

SELECT json_array_elements(data->'vertices') from field;
                json_array_elements                 
----------------------------------------------------
 {"lat":46.744628268759314,"lon":6.569952920654968}
 {"lat":46.74441692818192,"lon":6.570487107359068}
 {"lat":46.74426116111054,"lon":6.570355867853787}
 {"lat":46.74447250168793,"lon":6.569821681149689}
(4 rows)

maintenant il faut que je trouve comment je formate tout ça pour entrer les coordonnées dans la table suivante

create table geoField(id serial primary key, pointA geometry, pointB geometry, pointC geometry, pointD geometry);

si quelqu'un à une idée... je continu à chercher.

Dernière modification par chaugab (23/08/2016 15:36:50)

Hors ligne

#7 24/08/2016 10:09:39

chaugab
Membre

Re : Importer fichier .json

J'essaye d'utiliser la fonction json_to_recordset mais je tombe sur une erreur.

select * from json_to_recordset('[{"lat":46.744628268759314,"lon":6.569952920654968},{"lat":46.74441692818192,"lon":6.570487107359068},{"lat":46.74426116111054,"lon":6.570355867853787},{"lat":46.74447250168793,"lon":6.569821681149689}]') as (lat numeric, lon numeric);
ERROR:  function json_to_recordset(unknown) does not exist
LINE 1: select * from json_to_recordset('[{"lat":46.744628268759314,...
                      ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Hors ligne

#8 25/08/2016 09:11:35

gleu
Administrateur

Re : Importer fichier .json

Quelle version de PostgreSQL avez-vous ?


Guillaume.

Hors ligne

#9 25/08/2016 09:15:31

chaugab
Membre

Re : Importer fichier .json

J'utilise la version 9.3.14

Hors ligne

#10 25/08/2016 09:18:53

gleu
Administrateur

Re : Importer fichier .json

Donc je ne vois pas pourquoi vous êtes étonné par ce message d'erreur. Il n'y a pas de fonction json_to_recordset en 9.3 comme l'indique la doc : http://docs.postgresqlfr.org/9.3/functions-json.html


Guillaume.

Hors ligne

#11 25/08/2016 09:21:57

chaugab
Membre

Re : Importer fichier .json

Je n'avais pas vu, merci

Hors ligne

#12 25/01/2022 11:57:39

jeanphi45
Membre

Re : Importer fichier .json

Bonjour,

A l'attention de chaugab. Est-ce que vous avez réussi à importer le fichier json tel quel ?
ou bien avez-vous du retirer les retours à la ligne  ?

Hors ligne

#13 27/01/2022 20:27:20

chaugab
Membre

Re : Importer fichier .json

Bonjour, ça fait longtemps mais je je ne pense pas avoir eu à retoucher mon fichier.

Hors ligne

Pied de page des forums