Schreiben in eine SQL-Datenbank<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Die SQL-Verbindung in JMP eignet sich hervorragend zum Lesen von Daten. Verwendet sie jemand zum Schreiben von Daten?
Ich habe eine gespeicherte Prozedur, die Daten sammelt und in eine neue Tabelle schreibt. Es verwendet eine zweite Tabelle, um die Liste der Parameter zu lesen, damit es weiß, welche Daten erfasst werden müssen. Ich kann diese Tabelle mit JMP lesen, aber das Schreiben in sie ist alles andere als einfach:
- Die Textspalten werden wie in JMP nvarchar mit nachgestellten Leerzeichen gespeichert – dies erfordert eine Leerraum-Trimmfunktion, um die hochgeladenen Textspalten zu verwenden
- Datumsangaben werden korrekt heruntergeladen, aber der OBDC-Treiber gibt einen Fehler aus, wenn Sie versuchen, sie als Datumsangaben zu schreiben. Sie können dies umgehen, indem Sie zuerst die Spalte in das Textformat konvertieren und dann bei der Verwendung wieder konvertieren, aber das ist ziemlich ärgerlich.
Derzeit verwende ich eine gespeicherte Prozedur, um die korrekten Daten aus der von JMP erstellten Tabelle in die Mastertabelle zu kopieren, wodurch die Einschränkungen indirekt überwunden werden.
Meine Frage: Gibt es eine bessere Möglichkeit, JSL/SQL zusammen zu verwenden, um eine Tabelle zu lesen, neue Zeilen hinzuzufügen und dann die Änderungen/Ergänzungen zurück auf den Server zu schreiben?
Betreff: Schreiben in eine SQL-DatenbankDanke @vince_faller
Ich habe dies verwendet und schaffe es auch, es zu vergrößern, indem ich es in einer Schleife laufen lasse. Aus irgendeinem Grund hatte ich ein Limit von jeweils etwa 35.000 Zeilen, also habe ich einfach eine for-Schleife erstellt, um jeweils 25.000 Zeilen zu lesen und in die Datenbank einzugeben.
Betreff: Schreiben in eine SQL-DatenbankHallo,
Vielen Dank für Ihr Teilen.
Unten ist mein Fall und ich bin dankbar für Hilfe.
1. der SQL-Datenbankname im Server: SQL_machine_yield_db
Angehängte SQL_machine_yield_db.jmp, wenn das Update von der Datenbankverbindung abgerufen wird.
2. In der Datenbank gibt es 8 Spalten
3. Die Daten in der Tabelle „new_and_update_yield.jmp
Frage: Wie kann ich mit jsl/sql new_and_yield.jmp auf SQL_machine_yield_db auf dem Server aktualisieren?
Beste grüße
Betreff: Schreiben in eine SQL-DatenbankIch gehe davon aus, dass Sie mit einer WHERE-Anweisung abfragen, was die Datentabelle ist, und nicht nur die gesamte Tabelle abrufen?
Wenn Sie tatsächlich die gesamte Tabelle einbeziehen,
dt << Datenbank speichern( dbc,
„dbo.fake“,
Ersetzen
);
Würde funktionieren. Andernfalls tun Sie dies NICHT.Dadurch werden alle Informationen in Ihrer Tabelle gelöscht, die nicht in Ihrer JMP-Abfrage enthalten sind. Ich denke, das ist in JMP 12+?
Wenn nicht, können Sie es abspalten, unabhängig davon, ob es eine ID hat oder nicht.Führen Sie eine Aktualisierung durch, wenn es eine ID hat, führen Sie eine Einfügung durch, wenn dies nicht der Fall ist.Es wäre jedoch wahrscheinlich am besten, die ID-Spalte zu sperren und auszublenden.Ich spucke hier nur aus, aber ich denke, es sollte funktionieren.
Betreff: Schreiben in eine SQL-DatenbankIch habe den Eindruck, dass Sie möchten, dass die Datenbank automatisch aktualisiert wird, wenn Änderungen an der JMP-Tabelle vorgenommen werden (ohne die Schaltfläche „Aktualisieren“ als solche). Möglicherweise können Sie dies mit „Subscribe()“ tun. Beispiele finden Sie unter „Hilfe > Skriptindex“.
Betreff: Schreiben in eine SQL-DatenbankDanke für dieses Beispiel. Ich wusste, dass ich rohes SQL schreiben und ausführen konnte, z. B. INSERT, UPDATE und REPLACE, oder eine gespeicherte Prozedur ausführen und ihr Parameter übergeben konnte. Ich habe zum Beispiel nach SQL/JSL gesucht, wo ein Benutzer eine vorhandene Datenbanktabelle in JMP öffnen kann. Für den Endbenutzer scheint es sich lediglich um eine JMP-Tabelle zu handeln, die auf einem Remote-Computer gespeichert ist. Der Unterschied besteht darin, dass alle an dieser JMP-Tabelle vorgenommenen Änderungen in die Originaldatenbank hochgeladen werden konnten.
Jetzt kann ich sehen, wie ich JSL-Code schreiben kann, um zu überprüfen, ob der Tabelle neue Zeilen hinzugefügt wurden, und sie dann mit INSERT INTO in die Datenbank zu schreiben (vorausgesetzt, die Datentypkonflikte können kontrolliert werden). Irgendwelche Ideen, wie Sie Änderungen an vorhandenen Zeilen verfolgen können?
Betreff: Schreiben in eine SQL-DatenbankDas hat bei mir gut funktioniert.Wahrscheinlich verstehe ich Ihre Frage falsch.
dbc = Erstellen Sie eine Datenbankverbindung ( „DRIVER=SQL SERVER;SERVER=fake_database;Database=Test_DB“ );
sqlreturn = SQL ausführen (dbc,
„INSERT INTO [Test_DB].[dbo].[fake]
WERTE
('TestSQLinsert'
,1
,1
,'JMP'
,14.14
,14.14
,1
,'JMP'
,'JMP'
,'JMP'
,14
,14
)"
);
Datenbankverbindung schließen (dbc);

Ich gehe davon aus, dass Ihr Datumsproblem darin besteht, dass JMP Datumsangaben tatsächlich als Sekunden speichert.Sie können entweder MDYHMS() für Ihr Datum in JMP oder date add(JMPdate, s, '1-1-1970') in SQL ausführen.
Können Sie weitere Informationen geben?Ich kann Daten abrufen und Zeilen zur JMP-Tabelle hinzufügen und dann die SQL-Tabelle aktualisieren, aber ohne Kontext würde ich den Datenabruf einfach überspringen und direkt in SQL einfügen (oder SQL das Hinzufügen durchführen lassen und JMP ganz weglassen).
Betreff: Schreiben in eine SQL-DatenbankTut mir leid, dass ich nicht weiterhelfen kann, ich bin absoluter Neuling in diesem Thema, aber ich würde mich auch über jedes Feedback freuen, das jemand zum Schreiben in Datenbanken hat.