Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst SQL Server Express - SQL Befehl

Mitglied: freshman2017

freshman2017 (Level 1) - Jetzt verbinden

09.12.2019, aktualisiert 09:24 Uhr, 252 Aufrufe, 7 Kommentare

Guten Morgen liebe Gemeinde,

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

IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='TEST')
CREATE TABLE TEST

	(
        ID INT,
	Vorname VARCHAR(40),
	Nachname VARCHAR(40)
	)

GO

BULK INSERT TEST
FROM 'C:\ProgramData\TEST\test-1.txt' WITH
	(
	FIELDTERMINATOR = ';',
	ROWTERMINATOR = '\n'
	)

GO
Die .txt ist wie folgt aufgebaut:

1;Max;Mustermann
2;Erika;Musterfrau
3;Hans;Mustermann
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...
Mitglied: SlainteMhath
09.12.2019 um 11:15 Uhr
Moin,

Die Spalten kannst du mit einem Select abfragen:

SELECT * 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME = '{{Table Name}}'
    AND COLUMN_NAME = '{{Column Name}}'
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
Bitte warten ..
Mitglied: freshman2017
09.12.2019 um 12:02 Uhr
Ok, da reicht mein Wissen nicht aus, das in den Befehl einzuarbeiten. Wäre es so richtig für den ersten Teil?

IF NOT EXISTS (

                            SELECT * 
                            FROM INFORMATION_SCHEMA.COLUMNS 
                            WHERE TABLE_NAME = '{{TEST}}'
                            AND COLUMN_NAME = '{{INT}}'
                            AND COLUMN_NAME = '{{Vorname}}'
                            AND COLUMN_NAME = '{{Nachname}}'

CREATE TABLE TEST

	                   (
                           ID INT,
                           Vorname VARCHAR(40),
	                   Nachname VARCHAR(40)
	                   )

GO

IF EXISTS (

                            SELECT * 
                            FROM INFORMATION_SCHEMA.COLUMNS 
                            WHERE TABLE_NAME = '{{TEST}}'
                            AND COLUMN_NAME = '{{INT}}'
                            AND COLUMN_NAME = '{{Vorname}}'
                            AND COLUMN_NAME = '{{Nachname}}'

ALTER TABLE TEST

	                   (
                           ID INT,
                           Vorname VARCHAR(40),
	                   Nachname VARCHAR(40),
                           Adresse VARCHAR(40)
	                   )

GO
Aber wie kann ich es für den zweiten Teil machen?
Bitte warten ..
Mitglied: ukulele-7
LÖSUNG 10.12.2019 um 09:06 Uhr
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?
Bitte warten ..
Mitglied: freshman2017
10.12.2019 um 13:00 Uhr
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.
Bitte warten ..
Mitglied: SlainteMhath
10.12.2019 um 13:07 Uhr
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.
Bitte warten ..
Mitglied: freshman2017
10.12.2019 um 14:03 Uhr
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:

if not exists 
(
	select column_name 
	from INFORMATION_SCHEMA.columns 
	where table_name = 'TEST'
		and column_name = 'test'
)
 
ALTER TABLE BI add test TEXT

GO

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?
Bitte warten ..
Mitglied: SlainteMhath
LÖSUNG 10.12.2019, aktualisiert um 14:09 Uhr
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
Bitte warten ..
Ähnliche Inhalte
Datenbanken
Sql 2014 express
gelöst Frage von schmitDatenbanken5 Kommentare

Hallo zusammen, zur Zeit habe ich einen neuen ms sql express 2014 installiert und möchte gerne über das Ms ...

Entwicklung
Sql Befehl als .Exe?
gelöst Frage von freshman2017Entwicklung6 Kommentare

Guten Tag, über nachfolgenden Code führe ich einen längeren SQL Befehl mit einer Batch aus: Ich möchte ungern dass ...

Windows Tools

Microsoft SQL Express 2012 Upgrade auf 2014 Express

gelöst Frage von HimpkeWindows Tools2 Kommentare

Hallo Ihr Lieben :) Mein Betriebssystem: Windows 8.1 Eine Datenbank ist in 2012 schon vorhanden. ich habe eine ganz ...

Datenbanken

Backup restore SQL Express DB

Frage von franksigDatenbanken7 Kommentare

Hallo zusammen. ich bin keine SQL leuchte und hab da mal eine frage ich möchte gerne eine SQL Express ...

Neue Wissensbeiträge
Sicherheit
0-day Schwachstelle im Internet Explorer
Information von kgborn vor 3 TagenSicherheit1 Kommentar

In Microsofts Internet Explorer gibt es eine 0-day Schwachstelle in der Scripting Engine, die faktisch alle Browser- und Windows-Versionen ...

Internet

Internet-Speedtest Automatisieren via Befehlszeile, cmd, Bash (Windows, Linux, FreeBSD, Mac)

Tipp von anteNope vor 4 TagenInternet6 Kommentare

Also das hier ist irgendwie an mir vorbeigegangen. Einfacher geht es schlicht nicht mehr. Mit "-s 28624 wähle ich ...

Administrator.de Feedback

Entwicklertagebuch: Codeblöcke auf unseren Seiten

Information von admtech vor 4 TagenAdministrator.de Feedback8 Kommentare

Hallo Administrator User, Unsere Codeblöcke werden ab sofort anders dargestellt. Die Codeblöcke können nun direkt per Copy&Paste kopiert werden. ...

Humor (lol)
Internet - auch 2020 noch Neuland ?
Erfahrungsbericht von Henere vor 5 TagenHumor (lol)6 Kommentare

Heute eine Mail der Schule meiner Tochter bekommen. Blabla Umweltschutz bla bla siehe Anhang. Dumm nur: Da hab ich ...

Heiß diskutierte Inhalte
Hardware
Was ist der beste Rechner für CAD und Statische Berechnungen
Frage von Halle20Hardware40 Kommentare

Guten Morgen Zusammen, Ich stehe vor der Aufgabe für unsere Firma neue Rechner für die Zeichner und Statiker anzuschaffen ...

Visual Studio
VB.NET - XML Daten lesen und in DataGrid schreiben
Frage von ComX123Visual Studio35 Kommentare

Hallo zusammen Bin neu hier und hab da ne kleine Frage, da ich nicht weiter komme. Habe eine XML ...

Batch & Shell
Mit Hilfe von Batch numerisch sortieren
gelöst Frage von Booster123Batch & Shell11 Kommentare

Guten Tag liebe Community, ich habe leider ein Problem mit meiner Batch Datei. Habe es jetzt geschafft das ich ...

Windows Server
Computerobjekte in AD auf Gerätetyp filtern
Frage von SchroediWindows Server11 Kommentare

Hallo zusammen, gibt es eine Möglichkeit in der AD die Computerobjekte auf Gerätetyp, also Notebook / Desktop-PC in einer ...