Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Syntax import champs additionnels #479

Open
LafageDenis opened this issue Sep 21, 2023 · 10 comments
Open

Syntax import champs additionnels #479

LafageDenis opened this issue Sep 21, 2023 · 10 comments

Comments

@LafageDenis
Copy link

Bonjour,

Je souhaite importer des données incluant des champs additionnels mais je ne parviens pas à gérer les double quote pour qu'ils apparaissent correctement dans la base.

Ils doivent apparaitre sous la forme :
{"layer": "Arbustive", "slope": "6-25", "surface": 40, "humidity": "humide", "cover_herb": 100, "cover_tree": 0, "exposition": "indifférente", "physionomy": "végétation herbacée", "coeff_phyto": "2", "cover_shrub": 26, "cover_total": 100, "height_herb": 2, "height_tree": 0, "height_shrub": 4, "cover_bryo_algea": 0}

Si j'importe en l'état, je me retrouve avec des \ devant chaque double quote type {\"layer\": \"Arbustive\"}. Ça ne fonctionne pas nom plus si je tente de les doubler (ça donne {\"\"layer\"\": \"\"Arbustive\"\"}ou d'introduire moi-même le \ .

Merci !

@camillemonchicourt
Copy link
Member

Quelle version de GeoNature ? Quelle version du module Import ?

Je viens de tester avec un GeoNature 2.13.1 et Import 2.2.2 et je ne reproduis pas.
Sachant que l'import de champs additionnels a été revu et élargi dans la version 2.2.0 (#165) pour pouvoir y associer différents champs normaux depuis le fichier source.
Donc pas besoin d'y importer un champs au format JSON.

Mais je viens de tester avec un champs JSON et ça fonctionne bien.

J'exporte des données depuis le serveur de DEMO qui comprend des champs additionnels :

date_modification champs_additionnels
2023-08-17 14:21:49.904111 {'Test': None, 'as_date': {'day': None, 'year': None, 'month': None}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-08-17 14:04:25.442702 {'Test': None, 'as_date': {'day': None, 'year': None, 'month': None}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-08-17 14:04:47.915056 {'Test': None, 'as_date': {'day': 16, 'year': 2023, 'month': 8}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-08-17 14:05:56.367455 {'Test': None, 'as_date': {'day': None, 'year': None, 'month': None}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-08-17 14:06:27.455938 {'Test': None, 'as_date': {'day': 4, 'year': 2023, 'month': 8}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-08-17 14:08:09.607849 {'Test': None, 'as_date': {'day': 17, 'year': 2023, 'month': 8}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-08-17 14:07:50.352005 {'Test': None, 'as_date': {'day': 16, 'year': 2023, 'month': 8}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}

L'import fonctionne bien et dans la Synthèse j'ai bien pareil :

date_modification champs_additionnels
2023-09-22 17:18:43.640577 {'Test': None, 'as_date': {'day': 5, 'year': 2023, 'month': 9}, 'as_time': None, 'as_radio': None, 'test_add': 'test', 'as_number': None, 'bool_radio': 'truc', 'test_radio': 'Oui', 'as_checkbox': ['val01'], 'as_textaera': None, 'radio_test2': True, 'test_checkbox': ['check2', 'check1'], 'test_counting': None, 'exemple select': 'test1', 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': 'Beaufort 1', 'test_multi_select': None}
2023-09-22 17:18:43.640577 {'Test': None, 'as_date': {'day': None, 'year': None, 'month': None}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-09-22 17:18:43.640577 {'Test': 30, 'as_date': {'day': None, 'year': None, 'month': None}, 'as_time': None, 'mission': 'ffvfg', 'as_radio': 'val02', 'test_add': 'fff', 'as_number': None, 'bool_radio': None, 'test_radio': 'Non', 'as_checkbox': ['val01'], 'as_textaera': None, 'radio_test2': True, 'test_checkbox': ['check1'], 'test_counting': None, 'exemple select': 'test1', 'select_multiple': None, 'as_TYPE_PROTOCOLE': 'Protocole de collecte', 'test nomenclature': 'Beaufort 1', 'test_multi_select': []}
2023-09-22 17:18:43.640577 {'Test': None, 'as_date': {'day': None, 'year': None, 'month': None}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-09-22 17:18:43.640577 {'Test': None, 'as_date': {'day': None, 'year': None, 'month': None}, 'as_time': None, 'mission': 'ffvfg', 'as_radio': None, 'test_add': 'fff', 'as_number': None, 'bool_radio': None, 'test_radio': 'Non', 'as_checkbox': None, 'as_textaera': None, 'radio_test2': True, 'test_checkbox': ['check1'], 'test_counting': None, 'exemple select': 'test1', 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': 'Beaufort 1', 'test_multi_select': []}
2023-09-22 17:18:43.640577 {'Test': '12', 'as_radio': 'val03', 'typetest': 'B-10', 'as_number': '58', 'code-atlas': '04 - nidif. probable -> Couple présent dans son habitat durant sa période de nidification.', 'as_checkbox': ['val02'], 'as_textaera': 'info de plus', 'test_counting': 'tutu', 'longueur_avbras': '35', 'select_multiple': ['val2', 'val3'], 'as_TYPE_PROTOCOLE': 390}
2023-09-22 17:18:43.640577 {'Test': None, 'as_date': {'day': 2, 'year': 2023, 'month': 9}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-09-22 17:18:43.640577 {'Test': None, 'as_date': {'day': None, 'year': None, 'month': None}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-09-22 17:18:43.640577 {'Test': None, 'as_date': {'day': None, 'year': None, 'month': None}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-09-22 17:18:43.640577 {'Test': None, 'as_date': {'day': None, 'year': None, 'month': None}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-09-22 17:18:43.640577 {'Test': None, 'as_date': {'day': 16, 'year': 2023, 'month': 8}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}
2023-09-22 17:18:43.640577 {'Test': None, 'as_date': {'day': None, 'year': None, 'month': None}, 'as_time': None, 'as_radio': None, 'test_add': None, 'as_number': None, 'bool_radio': None, 'test_radio': None, 'as_checkbox': None, 'as_textaera': None, 'radio_test2': None, 'test_checkbox': None, 'test_counting': None, 'exemple select': None, 'select_multiple': None, 'as_TYPE_PROTOCOLE': None, 'test nomenclature': None, 'test_multi_select': None}

@LafageDenis
Copy link
Author

Je suis sur GN 2.12.3 et Import 2.1.
Par contre, dans ta synthese, les champs sont en single quote, tu les importes comme ça?

@camillemonchicourt
Copy link
Member

J'ai fait un export du serveur de démo de GeoNature que j'ai importé tel quel dans mon GeoNature local.

@LafageDenis
Copy link
Author

Effectivement, moi aussi ça passe sans soucis avec les champs du serveur démo... en single quote !
Or, quand je saisis des données en champs additionnels dans OccTax, les données sont stockées avec des doubles quote !
C'est visible dans les infos de relevé :
image

Et dans la bdd (vue dbeaver):
image

@Pierre-Narcisi
Copy link
Contributor

J'ai testé en 2.12.3 avec import en 2.1.0, je reproduit le bug, j'ai ensuite testé dans la version la plus récente de geonature et de import, et je ne l'ai plus, je penes que ça a été fix avec les modification sur les données additionnelles dans import

@LafageDenis
Copy link
Author

OK, alors je suis bon pour une mise à jour du module...

Merci du retour

@camillemonchicourt
Copy link
Member

Pour mettre à jour le module Import en version 2.2, il faut GeoNature en version 2.13.

@LafageDenis
Copy link
Author

Ah ok.
Et si je fais l'import pour corriger ensuite les erreurs ? Ça serait quoi la syntaxe pour retirer tous les \ du jsonb ? (je ne maitrise vraiment pas ces histoires de json...)

Merci

@camillemonchicourt
Copy link
Member

Le plus simple est peut-être de le faire en SQL dans la base de données, avec la fonction REPLACE().

@camillemonchicourt
Copy link
Member

Ça vaut le coup, beaucoup d'améliorations des performances dans la toute fraîche version 2.2.3. 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants