2 Stimmen

Importieren aus einer Excel-Tabelle in eine Datenbanktabelle

Ich versuche, Daten aus einem MS Excel 2007-Blatt mit der Importfunktion in meine Datenbanktabelle einzufügen. Die Herausforderung besteht darin, dass der Primärschlüssel meiner Datenbanktabelle automatisch inkrementiert wird. Das bedeutet im Grunde genommen, dass in der Excel-Tabelle aus praktischen Gründen keine Spalte vorhanden sein kann, die als Primärschlüssel fungiert, da dies es für die Editoren mühsam machen würde, Daten manuell einzugeben [die Excel-Tabelle für die Tabelle kann mehrmals hinzugefügt werden, daher ist es nicht wirklich eine gute Idee, den letzten Wert in der Primärschlüsselspalte im Auge zu behalten].

Hier liegt die Herausforderung. Die Importfunktion weigert sich, die Informationen in die spezifische Tabelle einzufügen, sondern erstellt stattdessen eine neue Tabelle in der Datenbank und fügt die Informationen dort ein. Um dem entgegenzuwirken, wäre eine zweite Strategie, einen Trigger oder gespeicherte Prozedur einzurichten, die periodisch durchführt [ich mache mir keine Gedanken über die Semantik, wann/wie dies ausgeführt wird]: INSERT INTO requiredDbColumn SELECT *
FROM excelSheetTable

Dies wird jedoch nicht wirklich funktionieren, da excelSheetTable und requiredDbColumn eine Werte- / Spaltenungleichheit aufweisen, da excelSheetTable nur die (n-1) Anzahl von Spalten hat, die aus der hochgeladenen Excel-Tabelle erstellt wurden, im Vergleich zu requiredDbColumn, die n Spalten hat, wobei die zusätzliche Spalte die Primärschlüsselspalte ist.

Ich habe den Primärschlüssel als automatische Inkrementierung festgelegt, daher bin ich mir nicht sicher, warum INSERT INTO, SELECT eine Spaltenanzahl-Wertanzahl-Unstimmigkeit angibt.

Das ist die allgemeine Herausforderung, hat jemand eine Lösung dafür?

Danke!

0voto

Jerry Beaucaire Punkte 3083

Wenn ich ein INSERT mache, gebe ich in der Regel "Werte" für alle Felder der neu eingefügten Zeile an. Mein Insert erhöht auch automatisch ein Primärschlüsselfeld.

Hier ist ein Auszug aus einem meiner INSERT-Befehle:

INSERT INTO Sicherheit.Mitgliedschaften VALUES (185790, '1461459', 'asdf', NULL, NULL, 1, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL)

Vielleicht brauchst du einen vollständiger konstruierten INSERT-Befehl?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X