Update Frage bei MySQL
-
Hallo,
bastel da gerade rum, ich importiere CSV Dateien in eine DB.
Einfach als varchar(x) für jede Spalte.
Ich habe dann eine Tabelle t_n mit den spalten col_0 - col_n.
Jede Spalte Varchar, keine Keys, einfach nur ein Datendump für die DB.Jetzt möchte ich aus einer dieser Quelltabellen die Daten in die Zieltabelle schaufeln.
Kann ich bei einem Update das so einfach machen?
Oder sind die Typen der Spalten da relevant?
Die Daten selber sind im Kontext ok, d.h. wenn ich ein FLOAT Feld mit daten aus der CSV Datei fülle, ist da auch ein als Float interpretierbarer Wert.Klappt das dann einwandfrei?
phlox
-
Verstehe zwar nicht was Du genau machst aber
In MySQL kann man jede Spalte in Hochkomas setzen. Egal welcher Typ.
Zahlen muss man nicht in Hochkomas setzen.
MySQL ist es da reichlich egal wenn du VARCHAR einfügst. Sollte also gehen.
-
Unix-Tom schrieb:
Verstehe zwar nicht was Du genau machst aber
In MySQL kann man jede Spalte in Hochkomas setzen. Egal welcher Typ.
Zahlen muss man nicht in Hochkomas setzen.
MySQL ist es da reichlich egal wenn du VARCHAR einfügst. Sollte also gehen.Naja, ich hab mich halt gefragt wie das intern abläuft, ob eine spalte die den typen varchar hat mit zb. float kompatibel ist.
Es sind ja viele tabellen bei mir und nicht nur FLOAT.So, jetzt habe ich noch eine Frage:
Wie kann ich da was konvertieren?
Boolsche Werte stehen bei mir als 'Y' bzw. 'N' in der CSV, aber ich brauche in der Tabelle 1 für Y, 2 für N, default ist 0, und 5 für unbekannt gibts auch noch
Kann ich das irgendwie konvertieren in SQL?phlox
-
Was für kleine schmutzige Dinge machst Du denn da? Hast Du wirklich eine boolsches Feld mit 6 Zuständen in der Datenbank?
Ich verstehe da wohl irgendwas nicht richtig.Grundsätzlich können Werte mittels CAST von einem Datentyp in einen anderen überführt werden.
-
Joe_M. schrieb:
Was für kleine schmutzige Dinge machst Du denn da? Hast Du wirklich eine boolsches Feld mit 6 Zuständen in der Datenbank?
Ich verstehe da wohl irgendwas nicht richtig.Ist nicht meine Datenbank
Und es sind nur 3-4, je nach sichtweise.
Mich interessiert vorallem, ob ich es hinbekommen kann, das aus 'Y' -> 1 wird, und 'N' -> 2.
Natürlich könnte ich vorher ein Updatestatement jeweils über die Tabelle jagen, mit SET x = 1 WHERE x = 'Y'.
-
phlox81 schrieb:
Mich interessiert vorallem, ob ich es hinbekommen kann, das aus 'Y' -> 1 wird, und 'N' -> 2.
Oh, seh ich jetzt erst... Nein mit Sicherheit nicht. Wenn MySQL überhaupt boolean utnerstütz, dann wird beim CAST aus 'N' 0 und aus 'Y' 1.
In TSQL könnte man da sicher etwas basteln, aber das hilft Dir bei MySQL auch nicht. Vielleicht meldet sich ja noch ein MySQL-Spezialist...
-
[quote="Joe_M."]
phlox81 schrieb:
Mich interessiert vorallem, ob ich es hinbekommen kann, das aus 'Y' -> 1 wird, und 'N' -> 2.
http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#operator_case
-
ALso beim Select wurde ja schon geschrieben. CASE ist ja auch Standard.
Beim INSERT macht dir das MySQL nicht automatisch.
-
Unix-Tom schrieb:
ALso beim Select wurde ja schon geschrieben. CASE ist ja auch Standard.
Beim INSERT macht dir das MySQL nicht automatisch.Meine Situtation:
Ich habe eine CSV Tabelle, und eine Ziel Tabelle. Die CSV Tabelle ist mittlerweile mit TEXT Felder COL_0 - COL_N gefüllt jeweils.
Naja, ich kanns natürlich mit Updatestatements auf die CSVTabelle selber versuchen.
Mich interessiert eher, ob ich, wenn ich das Update statement für die Zieltabelle ausführe, solche änderungen in diesem Statement machen kann.
-
Ich hab es mir angewöhnt entweder für sowas daS Import-Export-Programm von MySQL oder von MSSQL2008 zu verwenden.
Geht beides wobei mir das von MSSQL 2008 besser gefällt und auch fehlerfreier ist.