Announcement

Collapse
No announcement yet.

Daten in neue Tabelle laden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten in neue Tabelle laden

    Hallo zusammen

    Ich habe eine DB-Tabelle deren Index eine von einem Script generierter Schlüssel vom Typ varchar ist. Nun habe ich eine neue identische Tabelle erstellt, dessen Schlüssel vom Typ int ist.

    Meine Frage ist nun wie ich die Daten von der alten Tabelle in die neue Tabelle bringe mit einem SQL-Script:

    - Alle Daten aus Tabelle A lesen
    - Wert aus Spalte ID modifizieren
    - Alle Daten in Tabelle B schreiben

    Das Ganze muss automatisiert geschehen.

    Ist das möglich mit reinem SQL?

    Würde mich über Lösungsansätze freuen!

    Vielen Dank!

    mfg poffi

  • #2
    Originally posted by poffisu View Post
    Meine Frage ist nun wie ich die Daten von der alten Tabelle in die neue Tabelle bringe mit einem SQL-Script:

    - Alle Daten aus Tabelle A lesen
    - Wert aus Spalte ID modifizieren
    - Alle Daten in Tabelle B schreiben
    Code:
     INSERT INTO TabelleB 
     -- nun alle Felder auflisten ohne den PK (int) auflisten 
    SELECT 
     -- nun alle Felder auflisten (gleiche Reihenfolge wie oben) ohne PK VarChar
     FROM Tabelle A

    Comment


    • #3
      Cool, da läuft was im Forum. Vielen Dank!

      Mein erstes Problem hast du bereits gelöst, nicht daran gedacht, dass es so simple sein könnte. Jetzt geht das Ganze noch in die zweite Runde :

      Gleiche Ausgangslage wie bei meinem ersten Problem, nun handelt es sich aber um ein Datum das in einem total unbrauchbaren Format in einer Spalte vom Typ Text gespeichert wurde. In der neuen Tabelle ist die Spalte auch wirklich ein Datumstyp.

      Wenn ich es nicht falsch verstehe, muss ich das "möchte gern"-Datum aus der Textspalte so auslesen, dass ich es in die Datums-Spalte einfügen kann. Wäre das soweit noch möglich?

      Wenn ja, würde mich nun noch die Machbarkeit von folgendem
      interessieren. Das "möchte gern" Datum wurde in vier verschiedenen Formaten in die Spalte geschrieben. Ist folgendes nur mit SQL machbar:

      1. Erkennen um welchen Format es sich handelt (Mit einem Muster, Regex o. ä.)
      2. Formatabhängig den Text umformatieren (Beispiel: 01122008 --> in einen Format umwandeln der das Datumsfeld akzeptiert)

      Jetzt habe ich genügend geschrieben. Mich würde vor allem interessieren ob das Szenario überhaupt nur mit SQL lösbar ist. Gegen direkte Ansätze habe ich natürlich auch nicht einzuwenden.

      Vielen Dank!

      Freundliche Grüsse
      poffi

      Comment


      • #4
        Stichworte sind dazu (in der Hilfe weiter nach schauen)

        CASE WHEN THEN ELSE END

        CAST und CONVERT

        Wenn das zu kompliziert im SQL wird und/oder man es vielleicht noch öfter braucht kann man sich in SQl eine Skalare Funktion bauen,
        die das Text Feld als Parameter bekommt und eine Datetime zurückliefert

        Ebi

        Comment


        • #5
          Grundsätzlich kann das so klappen, wie ebis geschrieben hat, aber gerade Datumsfelder sind mit Vorsicht zu genießen.
          Die Frage ist, ob sich die Datumswerte eindeutig interpretieren lassen ...

          Wie soll denn z.B. ein Datum im Format "03042007" interpretiert werde?
          03. April 2007 oder lieber doch 04. April 2007?
          Gibt doch mal die vier unterschiedlichen Formate an, erst dann kann man urteilen, ob das wirklich funktioneren kann...

          Karsten

          Comment


          • #6
            Vielen Dank euch beiden!

            Es handelt sich doch "nur" um drei Formate. So sollten sie interpretiert werden:

            2007 --> 31.12.2007
            200712 --> 31.12.2007 (Tag ist Monatsabhängig, letzter Tag im Monat)
            20080220 --> 20.02.2008

            Werde mich mal daran versuchen.

            Gruss
            Christoph Süess

            Comment

            Working...
            X