php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 29-04-2013, 20:54
TerraBrain
 Registrierter Benutzer
Links : Onlinestatus : TerraBrain ist offline
Registriert seit: Apr 2013
Beiträge: 5
TerraBrain befindet sich auf einem aufstrebenden Ast
Question Datenbank Backup scheitert an ID

Hallo,

ich bin totaler Neuling in Sachen MySQL.

Ich habe eine Tabelle mit ca. 300 Datensätzen und möchte die nun um ein altes Backup erweitern. Das Backup was ich einspielen möchte, hat ca. 500.000 Datensätze.

Wenn ich nun versuche das Backup hinzuzufügen kommt die Fehlermeldung, das die ID schon vorhanden ist.

Code:
INSERT INTO `predb` (`id`, `vorname`, `nachname`, `alter`, `extra`,) VALUES
(1, 'hans', 'mustermann', '10', NULL);
ID1 ist schon da.

Was muss ich machen, das die alten Daten einfach hinten an gehangen werden und die vorhandene ID praktisch ignoriert und dann neu vergeben wird?

TerraBrain

Geändert von TerraBrain (29-04-2013 um 21:10 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 29-04-2013, 21:03
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.635
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Die ID beim INSERT weg lassen.
Mit Zitat antworten
  #3 (permalink)  
Alt 29-04-2013, 21:13
TerraBrain
 Registrierter Benutzer
Links : Onlinestatus : TerraBrain ist offline
Registriert seit: Apr 2013
Beiträge: 5
TerraBrain befindet sich auf einem aufstrebenden Ast
Standard

Das habe ich schon versucht. Und zwar so:
Code:
NSERT INTO `predb` (`vorname`, `nachname`, `alter`, `extra`,) VALUES (1, 'hans', 'mustermann', '10', NULL);
aber dann kommt der Fehler:
#1136 - Column count doesn't match value count at row 1
Mit Zitat antworten
  #4 (permalink)  
Alt 29-04-2013, 21:28
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.635
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Natürlich musst du auch die ID in VALUES () weg lassen.
Mit Zitat antworten
  #5 (permalink)  
Alt 29-04-2013, 21:38
TerraBrain
 Registrierter Benutzer
Links : Onlinestatus : TerraBrain ist offline
Registriert seit: Apr 2013
Beiträge: 5
TerraBrain befindet sich auf einem aufstrebenden Ast
Standard

Genau das ist ja das Problem.
Es sind >500.000 Datensätze. Auf die schnelle wüsste ich nicht, wie ich da jeweils die ID raus nehmen oder duch NULL ersetzen kann.

Bin für jeden Vorschlag dankbar.
Mit Zitat antworten
  #6 (permalink)  
Alt 29-04-2013, 23:30
TerraBrain
 Registrierter Benutzer
Links : Onlinestatus : TerraBrain ist offline
Registriert seit: Apr 2013
Beiträge: 5
TerraBrain befindet sich auf einem aufstrebenden Ast
Question

Ich habe noch eine Frage.

Wenn ich das backup importiere und er stösst zb. auf einen doppelten Eintrag wie zb 'nachname'. Normalerweise bricht der import dann ab.
Was kann ich tun, damit dieser Datensatz dann einfach übersprungen wird ?
Oder sollte ich anstatt INSERT lieber UPDATE nehmen ?
Mit Zitat antworten
  #7 (permalink)  
Alt 29-04-2013, 23:39
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.635
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TerraBrain Beitrag anzeigen
Wenn ich das backup importiere und er stösst zb. auf einen doppelten Eintrag wie zb 'nachname'. Normalerweise bricht der import dann ab.
Was kann ich tun, damit dieser Datensatz dann einfach übersprungen wird ?
Oder sollte ich anstatt INSERT lieber UPDATE nehmen ?
Entweder INSERT IGNORE oder ON DUPLICATE KEY UPDATE. Oder REPLACE.

MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.4 INSERT
MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.6 REPLACE
Mit Zitat antworten
  #8 (permalink)  
Alt 30-04-2013, 07:42
maria1019
 Registrierter Benutzer
Links : Onlinestatus : maria1019 ist offline
Registriert seit: Apr 2013
Beiträge: 1
maria1019 befindet sich auf einem aufstrebenden Ast
Standard

ID raus nehmen oder duch NULL ersetzen kann.

Bin für jeden Vorschlag dankbar.


-------------------------------
****

Geändert von Kropff (30-04-2013 um 13:44 Uhr) Grund: Spam entfernt
Mit Zitat antworten
  #9 (permalink)  
Alt 30-04-2013, 14:40
raiguen
 Registrierter Benutzer
Links : Onlinestatus : raiguen ist offline
Registriert seit: Feb 2012
Beiträge: 8
raiguen befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Es sind >500.000 Datensätze. Auf die schnelle wüsste ich nicht, wie ich da jeweils die ID raus nehmen oder duch NULL ersetzen kann.
Esrtens sind 500.000 Datensätze und mehr eher wenig, zweitens wurde Dir ja schon gesagt, dass die ID beim Import ignoriert werden kann bzw SOLL.
Drittens geht ein Import mittels INSERT INTO... SELECT prinzipiell schneller:
Code:
INSERT INTO `predb` (`vorname`, `nachname`, `alter`, `extra`) 
SELECT `vorname`, `nachname`, `alter`, `extra` FROM `backup_db`;
Wenn die ID vom Typ AUTOINCREMENT ist, dann wird für jeden neu importierten/eingefügten Datensatz aus der Backup-Tabelle die ID automatisch generiert und eingefügt.
Sofern diese ID NICHT als Verweis auf/in andere Tabellen notwendig ist, mag das so funktionieren...

Zitat:
auf einen doppelten Eintrag wie zb 'nachname'
Es können rein theoretisch (und eigentlich auch praktisch) mehrere Einträge mit dem gleichen Nachnamen vorhanden sein, aber mit verschiedenen Vornamen.
Und wenn Nachname und Vorname gleich sind (auch das soll es ja geben)?
Mit Zitat antworten
  #10 (permalink)  
Alt 01-05-2013, 23:47
TerraBrain
 Registrierter Benutzer
Links : Onlinestatus : TerraBrain ist offline
Registriert seit: Apr 2013
Beiträge: 5
TerraBrain befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von raiguen Beitrag anzeigen
Esrtens sind 500.000 Datensätze und mehr eher wenig, zweitens wurde Dir ja schon gesagt, dass die ID beim Import ignoriert werden kann bzw SOLL.
Drittens geht ein Import mittels INSERT INTO... SELECT prinzipiell schneller:
Code:
INSERT INTO `predb` (`vorname`, `nachname`, `alter`, `extra`) 
SELECT `vorname`, `nachname`, `alter`, `extra` FROM `backup_db`;
Wenn die ID vom Typ AUTOINCREMENT ist, dann wird für jeden neu importierten/eingefügten Datensatz aus der Backup-Tabelle die ID automatisch generiert und eingefügt.
Sofern diese ID NICHT als Verweis auf/in andere Tabellen notwendig ist, mag das so funktionieren...
Nein, die ID enhält keinen Verweis.
Aber ich kann diese Methode doch auch nur anwenden, wenn ich das ID-Feld vorher aus der Datenbank entferne oder ?
Mit Zitat antworten
  #11 (permalink)  
Alt 02-05-2013, 15:55
raiguen
 Registrierter Benutzer
Links : Onlinestatus : raiguen ist offline
Registriert seit: Feb 2012
Beiträge: 8
raiguen befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TerraBrain
Aber ich kann diese Methode doch auch nur anwenden, wenn ich das ID-Feld vorher aus der Datenbank entferne oder ?
NEIN! Die ID aus der Quelltabelle (=deine Backuptabelle) muss NICHT entfernt werden! Sie wird im SELECT-Teil einfach nicht mit ausgewählt für den 'Transfer'! Jeder Datensatz der Quelltabelle bekommt automatisch nach/beim Einfügen in die ZielTabelle eine neue, aufsteigende ID zugewiesen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datenbank Backup smoopie Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 2 23-09-2012 15:38
Eintragen in Datenbank scheitert madom PHP Developer Forum 4 15-09-2004 21:49
Datenbank-Backup bigtail PHP Developer Forum 17 13-08-2003 15:19
Datenbank Backup!!! Roninreneo PHP Developer Forum 2 15-04-2003 11:46
Datenbank-Backup hottemp SQL / Datenbanken 2 16-09-2002 14:35

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

EJS TreeGrid ansehen EJS TreeGrid

EJS TreeGrid is DHTML component written in pure JavaScript to display and edit data in table, grid, tree view or grid with tree on HTML page

09.04.2019 coqsoft@ | Kategorie: JAVASCRIPT/ Components
Suchmaschine redaktionell, Branchenportal zum Geld verdienen

Programmbeschreibung Die Bezahl-Suchmaschine ist in Perl und PHP programmiert (eigenes CGI-Verzeichnis notwendig), benötigt PHP aber keine MySQL-Datenbank. Webmaster haben mit dieser Suchmaschine neben der normalen kostenlosen Registrierung von Lin

06.04.2019 skripte@ | Kategorie: PHP/ Suchmaschinen
Oog Photo-Video-Gallery

Mit Oog Photo-Gallery können Sie einfach und stilvoll Bilder (auch Video & Audio) auf Ihrem PHP5-Webserver veröffentlichen und verwalten. Lizenz: GNU GPL v2

06.04.2019 trottbrand@ | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:15 Uhr.