2016-12-22 6 views
-1

Ich habe die folgende Tabelle:Insert konsekutiv IDs zwischen anderen IDs

id x y z 
1 z 
3  
6  x 
7  zy 
.... 
10000 

Ich brauche ids zwischen den anderen ids hinzuzufügen, die bereits sind, ohne innerhalb der Daten zu löschen. Ich kann scheinbar keine Lösung finden, habe alle möglichen Dinge versucht, aber am Ende leere Reihen gemacht. Ein bisschen neu zu sql alle zusammen.

+0

Warum müssen Sie das tun? Ich frage mich nur ... – axiac

+0

Ich habe eine Sicherung, die ich in die aktuelle db importieren muss, die nur mit Abfragen erstellt wird und die Zeilen zuerst erstellen muss, damit ich sie importieren kann. – Adrian

Antwort

0

Mit Hilfe der Informationen, die Sie im Kommentar zur Verfügung gestellt ...

Haben Sie eine Sicherung, die ich brauche, um Strom db zu importieren, die nur mit dem Update vorgenommen wird querys und die Zeilen erstellen müssen zunächst so dass ich importiere sie.

... und die Tatsache, dass Sie MySQL verwenden, denke ich, gibt es eine einfache Lösung für Ihr Problem.

Erstellen Sie eine Kopie Ihrer Sicherungsdatei (das Original haben, falls es nicht wie erwartet funktioniert), öffnen Sie sie in einem Texteditor und ersetzen UPDATE <table_name> mit INSERT INTO <table_name> (setzen Sie den tatsächlichen Namen der Tabelle statt <table_name>) .

Wenn einige der Zeilen, die Sie existiert bereits in der Tabelle importieren wollen, müssen Sie die folgenden Optionen, um die Konflikte zu lösen:

  1. Verwendung INSERT IGNORE INTO <table_name> als Ersatzzeichenfolge die Zeilen aus der Sicherung (die Zeilen zu ignorieren bereits in der Tabelle existierende bleiben unmodifiziert); technisch ignoriert IGNORE die Zeilen nicht, die Sie einfügen möchten; Es wird versucht, sie einzufügen, und es schlägt fehl, weil sie bereits vorhanden sind. Die Fehler werden jedoch als Warnungen behandelt (normalerweise handelt es sich um Fehler).
  2. Verwenden Sie REPLACE INTO <table_name> als Ersetzungszeichenfolge, um die vorhandenen Zeilen durch die Daten aus dem Backup zu ersetzen; technisch, REPLACE tut DELETE, gefolgt von INSERT; Es ist nicht die beste Lösung, wenn die Zeilen, die Sie einfügen möchten, nicht vollständig sind.
+0

Das Problem damit ist die Datei ist ein bisschen groß, um die comflicts manuell zu lösen, wenn ich in die Zeilen einfügen fehlen werden übersprungen und wenn ich nur Zeilen ersetzen werde leer – Adrian

+0

Die Sache ist, wenn ich es schaffen, die IDs sortiert bekommen , Ich kann sie alle importieren und dann jede Zeile löschen, die leer ist, derzeit auf dem ersten Teil stecken. – Adrian

+0

Ich verstehe dich nicht. Die beiden Strategien in der Antwort erklären, wie Sie entweder die vorhandenen Daten oder die importierten Daten für die Zeilen beibehalten, die an beiden Stellen vorhanden sind. Sie müssen nichts manuell lösen. Öffnen Sie einfach die Backup-Datei in einem Editor, suchen und ersetzen Sie sie mit der entsprechenden Zeichenfolge, speichern Sie sie und importieren Sie die aktualisierte Datei in die Datenbank. – axiac

Verwandte Themen