|
MasterQ |
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 07.02.22
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.03.2022, 14:49
Titel: database - MS SQL Server
|
|
Hallo,
ich möchte Daten von einer Datenbank zur nächsten mit MatLab transferieren. Dabei habe ich Probleme beim Schreiben auf einen MS SQL-Server. Speziell sind nur Datenfelder des Typs (n)varchar(x) betroffen.
Es werden Strings von einem PostgreSQL gelesen. Der längste ist mehr als 130.000 Zeichen lang. Als Zieltyp auf dem SQL Server muss daher varchar bzw. nvarchar mit dem Größenparameter 'max' verwendet werden.
Laut https://de.mathworks.com/help/database/ug/data-type-support.html ist das genau so richtig.
Es kommt aber nichts an.
Entgegen der oben genannten Doku werden nur dann Daten übermittelt, wenn ich nicht 'max' angebe sondern '1000'. Nur dann füllen sich die Datenfelder. Mit 'max' erhalte ich keine Fehler aber alle entsprechenden Datenfelder bleiben NULL. Andere Datentypen wie double oder int sind nicht betroffen.
Ich verwende folgende Verbindung:
Hat jemand einen Tipp?
Gruß
MQ
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.03.2022, 16:42
Titel:
|
|
Hallo,
mit welchem Befehl versuchst du denn in die Datenbank zu schreiben?
Ich kann nicht versprechen, dass ich dann weiterhelfen kann. Bei so speziellen Fragestellungen würde ich generell empfehlen, den Technischen Support von MathWorks zu kontaktieren.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
MasterQ |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 07.02.22
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.03.2022, 09:55
Titel:
|
|
Wenn die Tabelle basetable auf dem Server nicht existiert, wird sie automatisch angelegt. Das Problem hierbei ist, dass die Stringfelder bzw. deren Länge irgendwie geraten wird und so um die 100 liegt.
varchar(106) oder varchar(113) sind so typsiche Werte. Und dann komme ich mit Längen von 132k und das bricht natürlich ab. Ich habe per Hand dann auf nvarchar(max) geändert aber, wie gesagt, dann werden keine Werte geschrieben.
Gut geht es bis zu Feldlängen von 1000, also varchar(1000). Alles was darüber liegt wird ignoriert.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 08.03.2022, 17:41
Titel:
|
|
Hallo,
hast du versucht, den Datentyp explizit anzugeben, z.B. über die ColumnType Option von sqlwrite?
Falls ja und das nicht funktioniert hat, kann ich nur nochmal den Technischen Support empfehlen. So tief bin ich leider nicht in Datenbanken drin.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
MasterQ |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 07.02.22
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.03.2022, 14:29
Titel:
|
|
Hallo Harald,
bei MatLab geht es offensichtlich etwas chaotisch zu bei den Datenbanktreibern.
Ich hatte bisher mit ODBC gearbeitet und es deshalb damit versucht. MatWorks priorisiert aber wohl die Java-Treiber (JDBC).
Der TechService hat darauf hingewiesen, dass varchar(max) von odbc noch nicht unterstützt wird. Ich habe jetzt auf JDBC umgestellt und es geht.
Gruß
MQ
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|