September 27, 2022, 23:34:53

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Kann Tabellenwerte nicht bearbeiten

Begonnen von ellinho, März 03, 2012, 10:13:09

⏪ vorheriges - nächstes ⏩

ellinho

Hallo.
Ich arbeite mit einem Access-Projekt. In meiner Tabelle "geleistete Stunden", in die aus einer Textdatei die geleisteten Stunden monatlich importiert werden, kann ich keine Werte bearbeiten. Ich weiß, dass es daran liegt, dass für die Tabelle kein Primärschlüssel vergeben ist. Allerdings ist das bei den existierenden Feldern (Personalnummer, Monat, Jahr und Stunden) nicht möglich, da irgendwann mehrfach vorkommende Werte auftreten würden. Habe mal darüber nachgedacht, eine Spalte (Autowert) einzufügen, allerdings scheint es die im Access-Projekt nicht zu geben, oder habe ich ein Brett vor dem Kopf ?   ???
Sollte man eine Spalte für den Autowert einfügen können, wie kann ich meiner "BULK INSERT" Funktion sagen, dass sie die Werte erst in der 2.Column einfügen soll? Gibt es da so etwas wie die Anweisung FIRSTROW auch für Columns ? Etwa FIRSTCOLUMN ?

Gruß
Karsten

Bitsqueezer

Hallo Karsten,

vielleicht solltest Du Dich erst mal mit den grundlegenden SQL Server Themen auseinandersetzen? Natürlich gibt es eine Autowert-Spalte, dazu setzt man eine Spalte auf Typ "int" und dann in den Eigenschaften die Identity-Eigenschaft. Kann man auch mit CREATE/ALTER TABLE machen, guckst Du hier:

IDENTITY-Eigenschaft (Transact-SQL)

Und wenn man in die Doku zu BULK INSERT schaut, findet sich auch die Möglichkeit, eine Einstellungsdatei zu erstellen, die man BULK INSERT mitgeben kann, so daß eine genaue Einstellung und auch das Überspringen von Spalten möglich ist.

BULK INSERT (Transact-SQL)
Überspringen einer Tabellenspalte mithilfe einer Formatdatei

Gruß

Christian

ellinho

März 03, 2012, 14:50:04 #2 Letzte Bearbeitung: März 03, 2012, 15:05:31 von ellinho
Hallo.

Habe mich mit der Identity-Eigenschaft beschäftigt und es gelöst. Danke.
Bezüglich der BULK INSERT Doku (zweiter Link) muss ich sagen, dass bei den dort aufgeführten Beispielen zur Erstellung einer Formatdatei Syntaxfehler drin stehen müssen, denn das funktioniert bei mir nicht.
Beispiel:

bcp AdventureWorks2008R2..myTestSkipCol format nul -f myTestSkipCol_Default.fmt -c -T

Mit dem zuvor angeführten Befehl wird die Nicht-XML-Formatdatei myTestSkipCol_Default.fmt erstellt


Wenn ich in der Befehlszeile folgendes eingebe :

bcp PersonalSQL..geleisteteStd format nul -f geleisteteStd_Default.fmt -c -T

bekomme ich immer den Fehler "Die Richtung für das Kopieren muss mit "in", "out" oder "format" angegeben sein.

So komme ich an der Stelle nicht weiter. Kennt vielleicht noch jemand andere Quellen mit funktionierenden Beschreibungen?

Bitsqueezer

Hallo,

hast Du auch den Rest der Doku gelesen? Das Beispiel war wohl etwas unpraktisch, den mittleren Teil kann man nur weglassen, wenn das Schema "dbo" ist. Ansonsten muß nach dem Datenbanknamen auch das Schema angegeben werden.

Mein Test hat sowohl mit Nicht-XML als auch XML problemlos funktioniert:

bcp AdventureWorks.Sales.Currency format nul -T -c    -f Currency.fmt
bcp AdventureWorks.Sales.Currency format nul -T -c -x -f Currency.xml


Außerdem muß ggf. der Instanzname des Servers und Kennwort/User mit angegeben werden. Steht aber alles auf der Seite bzw. dem dortigen Link zu den Details zu bcp.

Gruß

Christian

ellinho