Ergebnis 1 bis 6 von 6

Thema: Mehrere Tabellen zusammenfügen

  1. #1
    Arnold ist offline Neuer Benutzer
    Registriert seit
    30.12.2007
    Beiträge
    3

    Standard Mehrere Tabellen zusammenfügen

    Hallo,

    ich habe hier 3 Datenbanken mit exakt der gleichen Tabellenstruktur. Was muss ich machen, damit ich die Tabellen möglichst einfach und schnell zusammenfügen kann?
    Die einzelnen Datensätze unterscheiden sich durch das Datum und die Uhrzeit, sind also auch datenbankübergreifend eindeutig.

    Viele Grüße,
    Arnold

  2. #2
    Avatar von Xandrian
    Xandrian ist offline Administrator
    Registriert seit
    23.11.2005
    Ort
    Bayreuth, Bayern, Germany, 106332342737801, Bayreuth, Germany
    Beiträge
    1.495

    Standard

    Hm, in SQL-Dumpen und dann einfach einfügen? Also ohne die Create-Tables sondern nur die INSERTs.

    cu tb

    btw: Es handelt sich aber nicht um so komische Wetterstationsdaten ;-)
    pg-forum.de unterstützen? Meine Wunschliste


  3. #3
    Arnold ist offline Neuer Benutzer
    Registriert seit
    30.12.2007
    Beiträge
    3

    Standard

    Einfach einfügen hört sich leicht an, ist es aber nicht.
    Habe jetz probeweise eine Tabelle der ersten DB ins SQL-Format exportiert, um sie dann in der zweiten einzufügen.
    Das funktioniert aber nicht so, wie ich mir das vorgestellt hab.


    So schaut dir Grundsyntax aus wenn ich was einfügen möchte:
    Code:
    INSERT INTO inside_temp(
                savetime, weatherdata, newflag)
        VALUES (?, ?, ?);
    Was muss ich in das Abfragefenster dann alles eingeben, wenn meine sql-Datei so ausschaut:
    Code:
    --
    -- PostgreSQL database dump
    --
    
    -- Started on 2007-12-30 14:11:25
    
    SET client_encoding = 'SQL_ASCII';
    SET standard_conforming_strings = off;
    SET check_function_bodies = false;
    SET client_min_messages = warning;
    SET escape_string_warning = off;
    
    SET search_path = public, pg_catalog;
    
    SET default_tablespace = '';
    
    SET default_with_oids = false;
    
    --
    -- TOC entry 1298 (class 1259 OID 16434)
    -- Dependencies: 4
    -- Name: inside_temp; Type: TABLE; Schema: public; Owner: postgres; Tablespace: 
    --
    
    CREATE TABLE inside_temp (
        savetime timestamp(0) with time zone NOT NULL,
        weatherdata real,
        newflag boolean
    );
    
    
    ALTER TABLE public.inside_temp OWNER TO postgres;
    
    --
    -- TOC entry 1651 (class 0 OID 16434)
    -- Dependencies: 1298
    -- Data for Name: inside_temp; Type: TABLE DATA; Schema: public; Owner: postgres
    --
    
    COPY inside_temp (savetime, weatherdata, newflag) FROM stdin;
    2007-05-05 06:44:00+02    20.799999    t
    ...
    ...
    ...
    2006-01-13 03:42:00+01    17.700001    t
    \.
    
    
    --
    -- TOC entry 1650 (class 2606 OID 16437)
    -- Dependencies: 1298 1298
    -- Name: inside_temp_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace: 
    --
    
    ALTER TABLE ONLY inside_temp
        ADD CONSTRAINT inside_temp_pkey PRIMARY KEY (savetime);
    
    
    --
    -- TOC entry 1648 (class 1259 OID 16438)
    -- Dependencies: 1298
    -- Name: index_savetime_inside_temp; Type: INDEX; Schema: public; Owner: postgres; Tablespace: 
    --
    
    CREATE INDEX index_savetime_inside_temp ON inside_temp USING btree (savetime);
    
    
    -- Completed on 2007-12-30 14:11:27
    
    --
    -- PostgreSQL database dump complete
    --

  4. #4
    Avatar von Xandrian
    Xandrian ist offline Administrator
    Registriert seit
    23.11.2005
    Ort
    Bayreuth, Bayern, Germany, 106332342737801, Bayreuth, Germany
    Beiträge
    1.495

    Standard

    Naja der COPY-Block schaut doch ganz gut aus oder meinst du nicht? Versuch doch einfach mal den ganzen Block zu verwenden ohne das in INSERTs umzuschreiben.

    cu tb
    pg-forum.de unterstützen? Meine Wunschliste


  5. #5
    Arnold ist offline Neuer Benutzer
    Registriert seit
    30.12.2007
    Beiträge
    3

    Standard

    Hab ich zuerst auch gedacht.
    Aber da kommt er nur bis zur ersten Jahreszahl:
    Code:
    ERROR: syntax error at or near "2007"
    SQL Status:42601
    Zeichen:63
    Trotzdem dankeschön.

    Ist es vielleicht hilfreicher wenn ich die Datei mal online stell?

  6. #6
    rolfS ist offline Benutzer
    Registriert seit
    14.04.2006
    Ort
    Frankfurt
    Beiträge
    53

    Standard

    Hallo Arnold,

    typischerweise entstehen 2 Probleme beim Mergen.
    • Es wird aus dem Dump heraus wieder eine eigene Indexdatei angelegt
    • Der Zähler des Indexes wird auf den Letzten Eintrag gesetzt.
    Ich mache in solchen Fällen einen reinen Datendump, in dem zwar auch noch die Daten für die Indizes vorhanden sind. Diese lassen sich aber mit einem Editor leicht entfernen.

    Mit "pg_dump -DT tabellenname datenbank" bekommst Du nur die Daten im "klassischen" SQL-Stil der angegebenen Tabelle.
    In einem Editor Deiner Wahl entfernst Du nun
    • Alle Zeilen, die nicht mit "Insert into" beginnen.
    • Evtl in den Tabellen die Spalte "id", sowohl im ersten Teil des Insert-Befehls, als auch im "value"-Teil. Dies geht oft mit einem Search/Replace-Befehl.
    Jetzt kannst Du die Dateien zusammenfassen oder einzeln in die neue Datenbank einspielen - es muss allerdings eine Datenbank mit einer entsprechenden Tabelle vorliegen.

    Gruß
    Rolf

Ähnliche Themen

  1. Problem Abfrage über mehrere Tabellen
    Von Kaptain Iglo im Forum SQL
    Antworten: 1
    Letzter Beitrag: 12.06.2011, 08:38
  2. Volltextsuche über mehrere Tabellen
    Von joh im Forum Allgemeines
    Antworten: 0
    Letzter Beitrag: 26.05.2010, 15:55
  3. Antworten: 5
    Letzter Beitrag: 17.03.2010, 13:52
  4. Join über mehrere Tabellen
    Von wannebeme im Forum SQL
    Antworten: 5
    Letzter Beitrag: 02.12.2009, 18:57
  5. sicht über mehrere tabellen?
    Von santashelper im Forum Trigger und Funktionen
    Antworten: 9
    Letzter Beitrag: 08.01.2008, 01:36

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum