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 gerade online
Registriert seit: Mar 2008
Beiträge: 3.576
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 gerade online
Registriert seit: Mar 2008
Beiträge: 3.576
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 gerade online
Registriert seit: Mar 2008
Beiträge: 3.576
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

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

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:21 Uhr.