SQL Server Express - SQL Befehl

freshman2017
Guten Morgen liebe Gemeinde,

nutze derzeit folgende Befehl, um eine Tabelle anzulegen und diese mit Daten aus einer Tabelle anzulegen:


Die .txt ist wie folgt aufgebaut:


Jetzt weiß ich nicht weiter, wie ich am besten den Befehl anpassen kann, dass er zu einem im...

...ersten Abschnitt prüft, ob die Tabelle TEST genau mit den angegeben Felder vorhanden ist, sonst sollen diese neu angelegt werden - falls neue Felder durch diesen Befehl hinzugefügt werden sollen...
...zweiten Abschnitt prüft, ob die Datensätze bereits vorhanden sind oder nicht - wenn diese nicht vorhanden sind, soll er diese einfügen...

Content-Key: 523634

Url: https://administrator.de/contentid/523634

Ausgedruckt am: 25.01.2022 um 14:01 Uhr

Mitglied: SlainteMhath
SlainteMhath 09.12.2019 um 11:15:27 Uhr
Goto Top
Moin,

Die Spalten kannst du mit einem Select abfragen:


und dann die nicht vorhandenen per ALTER TABLE hinzufügen.

im 2ten Abschnitt würde ich den Import in eine Temp-Tabelle machen und die mann mittels MERGE in die persistente Tabelle einfügen.

lg,
Slainte
Mitglied: freshman2017
freshman2017 09.12.2019 um 12:02:10 Uhr
Goto Top
Ok, da reicht mein Wissen nicht aus, das in den Befehl einzuarbeiten. Wäre es so richtig für den ersten Teil?


Aber wie kann ich es für den zweiten Teil machen?
Mitglied: ukulele-7
Lösung ukulele-7 10.12.2019 um 09:06:51 Uhr
Goto Top
COLUMN_NAME kann nicht gleichzeitig 3 Werte haben, es kann also entweder INT, Vorname oder Nachname drin stehen aber nicht alles zur selben Zeit. Du wirst jede Spalte einzeln prüfen müssen und ggf. die Tabelle mit ALTER TABLE um die Spalte erweitern müssen die fehlt.

Ist das denn überhaupt sinnvoll? Ich meine meistens gibt es die Tabelle oder es gibt sie nicht. Was genau ist denn dein Ziel?
Mitglied: freshman2017
freshman2017 10.12.2019 um 13:00:36 Uhr
Goto Top
Zitat von @ukulele-7:

COLUMN_NAME kann nicht gleichzeitig 3 Werte haben, es kann also entweder INT, Vorname oder Nachname drin stehen aber nicht alles zur selben Zeit. Du wirst jede Spalte einzeln prüfen müssen und ggf. die Tabelle mit ALTER TABLE um die Spalte erweitern müssen die fehlt.

Ist das denn überhaupt sinnvoll? Ich meine meistens gibt es die Tabelle oder es gibt sie nicht. Was genau ist denn dein Ziel?

Mein Ziel ist es eigentlich, dass ich gerne einen Befehl haben möchte, der prüft, ob die richtigen Spalten hinterlegt sind und ich diese einfach über eine Anweisung erweitern kann, falls gewünscht.

Des Weiteren soll er bei jedem Import aus meiner .txt Datei nicht die doppelten Datensätze einfügen sondern prüfen, ob diese bereits vorhanden oder nicht. Wenn nicht vorhanden, darf er diese einfügen.
Mitglied: SlainteMhath
SlainteMhath 10.12.2019 um 13:07:14 Uhr
Goto Top
Mein Ziel ist es eigentlich, dass ich gerne einen Befehl haben möchte, der prüft, ob die richtigen Spalten hinterlegt sind und ich diese einfach über eine Anweisung erweitern kann, falls gewünscht.
Dazu bauchst du für jeden Spalte ein IF EXIST mit entsprechendem SELECT nach dem Schema aus meinem Post. Bei FALSE musst du dann die Tabelle mit ALTER TABLE ... ADD <spalte> einfügen

Des Weiteren soll er bei jedem Import aus meiner .txt Datei nicht die doppelten Datensätze einfügen sondern prüfen, ob diese bereits vorhanden oder nicht. Wenn nicht vorhanden, darf er diese einfügen.
Auch hier: wie bereits gepostet. BULK INSERT in temporäre Tabelle, dann mit MERGE in die persistente einfügen.
Mitglied: freshman2017
freshman2017 10.12.2019 um 14:03:50 Uhr
Goto Top
Zitat von @SlainteMhath:

Mein Ziel ist es eigentlich, dass ich gerne einen Befehl haben möchte, der prüft, ob die richtigen Spalten hinterlegt sind und ich diese einfach über eine Anweisung erweitern kann, falls gewünscht.
Dazu bauchst du für jeden Spalte ein IF EXIST mit entsprechendem SELECT nach dem Schema aus meinem Post. Bei FALSE musst du dann die Tabelle mit ALTER TABLE ... ADD <spalte> einfügen


Ok - ich hab es testen können:



Des Weiteren soll er bei jedem Import aus meiner .txt Datei nicht die doppelten Datensätze einfügen sondern prüfen, ob diese bereits vorhanden oder nicht. Wenn nicht vorhanden, darf er diese einfügen.
Auch hier: wie bereits gepostet. BULK INSERT in temporäre Tabelle, dann mit MERGE in die persistente einfügen.

Ich benötige hier Unterstützung - wie kann der Befehl aussehen?
Mitglied: SlainteMhath
Lösung SlainteMhath 10.12.2019 aktualisiert um 14:09:06 Uhr
Goto Top
ich benötige hier Unterstützung - wie kann der Befehl aussehen?

CREATE TABLE #incoming ....

BULK INSERT #incoming ....

MERGE #incoming USING TEST ON ....
Näheres z.b. hier: http://www.sqlservertutorial.net/sql-server-basics/sql-server-merge/

DROP TABLE #incoming
Heiß diskutierte Beiträge
question
Ist diese Hardware sinnvoll für privaten Haushalt?stonevVor 1 TagFrageRouter & Routing5 Kommentare

Hallo erstmal :) Meine alte Fritzbox 7490 spinnt seit gestern. Ich gehe von Alterschwäche aus, es wird also Ersatz fällig. Zufrieden war ich mit ihr ...

question
LTO-5 Bänder Löschen geht nichtkreuzbergerVor 1 TagFrageBackup23 Kommentare

Hallo ihr Helden, ich hab da ein blödes Problem: Ich habe einen Stapel gebrauchte LTO-5-Bänder bekommen, die soweit völlig i. O. sind. Mit welchem Programm ...

question
Teilenummer für weiße Esprimo Mini-PC?LochkartenstanzerVor 1 TagFrageHardware21 Kommentare

Moin, Ich habe eine eigenwillige Kundin, die einen weißen Fujitsu Esprimo Mini-PC haben will. Und der Kundin ist, wie sollte es anders sein, die Farbe ...

question
Ein Smartphone für privat und geschäftliche NutzungNebellichtVor 1 TagFragePeripheriegeräte5 Kommentare

Hallo, für die Firma werden aktuell Smartphone(s) gesucht, die da eine Dual Sim ermöglichen und zusätzlich trennende Sicherheit, d.h. ein Trennen von privaten Daten und ...

question
Tipp für Firewall mit mehreren DHCP-Instanzen für VLAN gesucht gelöst Holly484Vor 21 StundenFrageFirewall5 Kommentare

Hallo zusammen, hatte in einer Gemeinschaftspraxis bisher tolle Erfahrungen mit Netgear über die letzten vielen Jahre gesammelt. Jetzt ist Netgear aus dem Firewall-Business ausgestiegen. Bisher ...

question
Suche nach "Beschreibung"ThabeusVor 1 TagFrageVmware11 Kommentare

Moin, ich stehe gerade auf dem Schlauch bei der Suche nach einer Anleitung. Vielleicht kann mir jemand helfen die "Begrifflichkeit" zu finden. In meinem Netzwerk ...

question
User verschickt mit kryptischer Outlook.com Adresse aus on-prem Exchange 2016LauneBaerVor 1 TagFrageExchange Server10 Kommentare

Servus in die Runde, ich habe ein für mich nicht nachvollziehbares Problem bei einem User, das heute zum 2ten mal aufgetreten ist. Und zwar verschickte ...

question
Windows Admin Center - Zugriff verweigertsaschakpVor 1 TagFrageWindows Update3 Kommentare

Hallo ich habe das Windows Admin Center Installiert, leider bekomme ich beim öffnen die Meldung: Zugriff verweigert Sie sind leider nicht zum Senden dieser Anforderung ...