Écrire dans une base de données SQL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />La connexion SQL dans JMP est idéale pour lire des données. Quelqu'un l'utilise-t-il pour écrire des données ?
J'ai une procédure stockée qui rassemble des données et les écrit dans une nouvelle table. Il utilise une deuxième table pour lire la liste des paramètres afin de savoir quelles données collecter. Je peux lire ce tableau avec JMP mais y écrire est loin d'être simple :
- les colonnes de texte sont enregistrées comme dans JMP nvarchar avec des espaces blancs à la fin - cela nécessite une fonction de suppression des espaces blancs pour utiliser les colonnes de texte téléchargées
- les dates se téléchargent correctement mais le pilote OBDC génère une erreur si vous essayez de les écrire sous forme de dates. Vous pouvez contourner ce problème en convertissant d'abord la colonne au format texte, puis en la reconvertissant lors de son utilisation, mais c'est plutôt ennuyeux.
Actuellement, j'utilise une procédure stockée pour copier les données correctes de la table créée par JMP vers la table principale, ce qui surmonte indirectement les limitations.
Ma question est-il une meilleure façon d'utiliser JSL/SQL ensemble pour lire une table, ajouter de nouvelles lignes, puis réécrire les modifications/amendements sur le serveur ?
Re : Ecrire dans une base de données SQLmerci @vince_faller
je l'ai utilisé et j'ai également réussi à le faire évoluer en l'exécutant en boucle. pour une raison quelconque, j'avais une limite d'environ 35 000 lignes à la fois, alors je viens de créer une boucle for pour lire 25 000 lignes à la fois et les saisir dans la base de données.
Re : Ecrire dans une base de données SQLSalut,
Merci pour votre partage.
Vous trouverez ci-dessous mon cas et j'apprécie votre aide.
1. le nom de la base de données SQL sur le serveur : SQL_machine_yield_db
SQL_machine_yield_db.jmp joint lors de la mise à jour à partir de la connexion à la base de données.
2. dans la base de données, il y a 8 colonnes
3. les données du tableau "new_and_update_yield.jmp
Question : comment utiliser jsl/sql pour mettre à jour new_and_yield.jmp vers SQL_machine_yield_db sur le serveur ?
Cordialement
Re : Ecrire dans une base de données SQLJe suppose que vous demandez ce qu'est la table de données avec une instruction WHERE et que vous ne vous contentez pas d'extraire la table entière ?
Si vous arrivez à rassembler toute la table,
dt << Enregistrer la base de données ( dbc,
"dbo.fake",
Remplacer
);
Travaillerait. Sinon, NE FAITES PAS ça.Comme cela supprimera toutes les informations de votre table qui ne figurent pas dans votre requête JMP. Je pense que c'est dans JMP 12+ ?
Sinon, vous pouvez le séparer s'il a un identifiant ou non.Faites une mise à jour s'il a un identifiant, faites une insertion si ce n'est pas le cas.Il serait probablement préférable de verrouiller et de masquer la colonne ID.Je ne fais que cracher ici, mais je pense que cela devrait fonctionner.
Re : Ecrire dans une base de données SQLJ'ai le sentiment que vous souhaitez que la base de données soit « mise à jour automatiquement » lorsque des modifications sont apportées à la table JMP (sans bouton « Mettre à jour », en tant que tel). Vous pourrez peut-être le faire en utilisant « Subscribe() ». Voir « Aide > Index des scripts » pour des exemples.
Re : Ecrire dans une base de données SQLMerci pour cet exemple. Je savais que je pouvais écrire du SQL brut et l'exécuter, par exemple INSERT, UPDATE et REPLACE, ou exécuter une procédure stockée et lui transmettre des paramètres. Je cherchais par exemple SQL/JSL où un utilisateur peut ouvrir une table de base de données existante dans JMP. Pour l'utilisateur final, il s'agit simplement d'une table JMP stockée sur un ordinateur distant. La différence étant que toutes les modifications apportées à cette table JMP pourraient être téléchargées dans la base de données d'origine.
Je peux maintenant voir comment je pourrais écrire du code JSL pour vérifier si de nouvelles lignes ont été ajoutées à la table, puis utiliser INSERT INTO pour les écrire dans la base de données (à condition que les incompatibilités de types de données puissent être contrôlées). Avez-vous des idées sur la façon de suivre les modifications apportées aux lignes existantes ?
Re : Ecrire dans une base de données SQLCA marchait bien pour moi.Je comprends probablement mal votre question.
dbc = Créer une connexion à la base de données ( "DRIVER=SQL SERVER;SERVER=fake_database;Database=Test_DB" );
retoursql = Exécuter SQL (dbc,
"INSÉRER DANS [Test_DB].[dbo].[fake]
VALEURS
('TestSQLinsert'
,1
,1
,'JMP'
,14.14
,14.14
,1
,'JMP'
,'JMP'
,'JMP'
,14
,14
)"
);
fermer la connexion à la base de données (dbc);

Je suppose que votre problème de dates est dû au fait que JMP stocke les dates en secondes.Vous pouvez soit faire un MDYHMS() à votre date dans JMP, soit effectuer un ajout de date (JMPdate, s, '1-1-1970') dans SQL.
Avez-vous plus d'informations à donner ?Je peux extraire des données et ajouter des lignes à la table JMP, puis mettre à jour la table SQL, mais sans contexte, je sauterais simplement l'extraction des données et les insérerais directement dans SQL (ou demanderais à SQL de faire l'ajout et de laisser JMP complètement de côté).
Re : Ecrire dans une base de données SQLDésolé, je ne peux pas vous aider, je suis complètement novice sur ce sujet, mais j'apprécierais également tout commentaire de quiconque sur l'écriture dans des bases de données.