versuche mich gerade in SQL einzuarbeiten, scheitere aber bereits bei der Erstellung und dem Befüllen der Tabellen und dem Vergeben der Primär- und Fremdschlüssel.
Ich habe leider keinen Anfänger-Thread gefunden und hoffe trotzdem, hier bin ich richtig.
Ich versuche das mit pgAdminIII, nicht postgreSQL, weil ich eine Phobie vor Eingabeaufforderungen habe. Es wäre schön, wenn mir jemand auf die Sprünge helfen könnte, ich verzweifle langsam. Vielen Dank
Ich möchte eine Tabelle ‚personal‘ erstellen und die darauffolgend dann per INSERT über csv befüllen.
CREATE TABLE personal
(
Personalnummer Numeric(5,0) NOT NULL,
Vorname CHAR(30),
Name CHAR (30) NOT NULL,
Strasse CHAR (30),
PLZ CHAR (6),
Ort CHAR (30),
Geburt DATETIME,
Geschlecht CHAR (1),
Gehalt NUMERIC(6,2)
CONSTRAINT pnr PRIMARY KEY (Personalnummer)
)
;
Wenn ich die Abfrage in pgAdminIII ausführe, erhalte ich:
FEHLER: Syntaxfehler bei »(«
LINE 12: CONSTRAINT pnr PRIMARY KEY (Personalnummer)
^
********** Fehler **********
FEHLER: Syntaxfehler bei »(«
SQL Status:42601
Zeichen:239
Exakt. Außerdem gibt es DATETIME nicht und ich wage zu bezweifeln, ob NUMERIC sinnvoll für eine personalnummer ist. Ob es sinnvoll ist,Namen und Straße auf eine fixe Länge zu begrenzen sei dahingestellt.
Vielen Dank mit Komma und DATE komme ich weiter. Ich werde sicherlich noch weitere solcher Anfängerfehlerfragen haben bis ich es kann. Bin ich damit hier richtig oder besser unter “SQL”? Eine Beginner-Columne habe ich nicht finden können.
Vielleicht komme ich irgendwann über diesen Umweg zur Commandozeile. ZUerst möchte ich aleinigermaßen klar kommen. Mein Ziel wäre für euch ein Kinderspiel (5 Tabellen normalisieren, referenzieren, eine Spalte aus alter dBase Datei importieren, Daten bereinigen und richtige Formate setzen). Für mich ist es sehr schwer, da ich’s nur schwer lerne und leider wenig Zeit habe. Und ich möchte auch nicht zu sehr nerven.
Carsten
ich bin neu hier, genauso wie in der Materie PostgreSQL und PostGIS.
Da ich ebenfalls ein Problem direkt zum Start hin mit dem pgAdmin habe, schreibe ich es einfach mal in diesen Thread. Falls ich hier falsch bin, bitte verschieben.
Es geht um folgendes: Ich habe eine Testdatenbank mit PostgreSQL 9.4 erstellt und 2 Tabellen erstellt.
Die Erste heißt Projekte und besteht aus 2 Spalten (Projektnummer, Projektname). Ich habe diese mit dem Datenimport gefüllt und habe den PrimaryKey auf Projektnummer gelegt…
Alles super… alles einfach… nun zur Zweiten: Hier gibt es 5 Spalten (Projektnummer, Bohrungsname, Rechtswert, Hochwert, Ansatzhöhe). Hier habe ich den PrimaryKey auf Bohrungsname gelegt… Funktioniert auch super. Vorher habe ich natürlich wieder Datensätze importiert… Nun kommt das Problem:
Ich möchte den ForeignKey setzen, also die Spalte Projektnummer aus der TAbelle Bohrungen mit der Spalte Projektnummer (welche PK ist) aus der TAbelle Projekte verknüpfen und bekomme folgenden Fehler:
FEHLER: Einfügen oder Aktualisieren in Tabelle “Bohrungen” verletzt Fremdschlüssel-Constraint “Projektnummer”
DETAIL: Schlüssel (Projektnummer)=(215219) ist nicht in Tabelle “Projekte” vorhanden.
Tatsächlich ist diese Projektnummer abre dort vorhanden.
Ich verstehe den Fehler einfach nicht.
Es wäre super wenn jemand einen Lösungsvorschlag hat… Ich tippe mal auf irgendwelche Indizies oder sowas… Denn vor einer Woche hat das mit den selben Tabellen einwandfrei funktioniert.
-- Table: "Projekte"
-- DROP TABLE "Projekte";
CREATE TABLE "Projekte"
(
"Projektnummer" character varying(264) NOT NULL,
"Projektname" character varying(264),
CONSTRAINT "Projektnummer" PRIMARY KEY ("Projektnummer")
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Projekte"
OWNER TO postgres;
GRANT ALL ON TABLE "Projekte" TO postgres;
GRANT ALL ON TABLE "Projekte" TO public;
-- Table: "Bohrungen"
-- DROP TABLE "Bohrungen";
CREATE TABLE "Bohrungen"
(
"Projektnummer" character varying(264) NOT NULL,
"Bohrungsname" character varying(264) NOT NULL,
"Rechtswert" character varying(264),
"Hochwert" character varying(264),
"Ansatzhoehe" character varying(264),
CONSTRAINT "Bohrungsname" PRIMARY KEY ("Bohrungsname"),
CONSTRAINT "Projektnummer" FOREIGN KEY ("Projektnummer")
REFERENCES "Projekte" ("Projektnummer") MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Bohrungen"
OWNER TO postgres;
GRANT ALL ON TABLE "Bohrungen" TO public;
REVOKE ALL ON TABLE "Bohrungen" FROM postgres;
-- Index: "fki_Projektnummer"
-- DROP INDEX "fki_Projektnummer";
CREATE INDEX "fki_Projektnummer"
ON "Bohrungen"
USING btree
("Projektnummer" COLLATE pg_catalog."default");
Wenn der Fehler so kommt, wird auch was wahres dran sein. Warum verwendest Du für eine NUMMER (projektnummer) einen varchar? Vermutlich hast Du da Leerzeichen im String, daher der Fehler.
Allgemein: Du scheints bisher nur einen Datentypen zu kennen, oder? “Ansatzhoehe” klingt für mich auch nach INT oder Numerisch, nicht aber varchar(264).
hi, nunja ich kenne nicht nur den einen Datentyp, aber genau darum geht es bei dieser Testdatenbank… ich muss rausfinden wie es am besten passt.
Mit dem Leerzeichen, ist eine gute Richtung… Habe ich auch schon überprüft… Ist leider nicht so… aber ich werde mal die Projektnummer auf Integer setzen und mal schauen. Bei der Ansatzhöhe bin ich mir noch nicht sicher ob das m NN mit in die einzelnen Zeilen kommt oder eben einfach in den Spaltennamen.
Ich melde mich
Hallo!
Eine Projektnummer kann man schon als varchar darstellen, da können auch alphanumerische Zeichen drin sein. Ich mache das wenn möglich so, das ich eine interne id per serial vergebe, die kein Nutzer zu Gesicht bekommt und die Projektnummer als Unique und für den Nutzer sichtbar mache. So bleibt mein Datenmodell immer konsistent, egal was passiert
Für Ansatzpunkthöhe würde ich numeric verwenden und ein Feld ‘srid’ einführen, das das koodinatensystem enthält. So kannst du Koordinaten verschiedener Systeme verwenden. Ähnliches kannst du auch für die Höhenangabe machen, z.B. zur Unterscheidung SKN oder NN.
Gruß Uwe
PS: Ich baue gerade eine recht umfangreiche Aufschlußdatenbank, frag also ruhig
nun sagt er mir, dass 215001 eine ungültige Eingabesyntax für ganze Zahlen ist… langsam bin ich verwirrt
hi uwe… ja wir versuchen auch gerade eine seeehr umfangreiche AUfschlußdatenbank zu bauen, inklusive der einzelnen Schichten pro Bohrung ^^
Gute Idee mit dem Koordinatensystem… Aber wir verwenden nur das GK4 bzw messen nur damit ein oder rechnen um ^^
also heißt das du vergibst eine art interne ID unabhängig von der Projektnummer? aber ich versuche ja meine Bohrungen dem entsprechenden projekt zuzuweisen… die ganze geschichte soll später mit QGIS dargestellt werden ^^
-- Table: "Projekte"
-- DROP TABLE "Projekte";
CREATE TABLE "Projekte"
(
"Projektnummer" integer NOT NULL,
"Projektname" character varying(264),
CONSTRAINT "Projektname" PRIMARY KEY ("Projektnummer")
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Projekte"
OWNER TO postgres;
ne sorry hatte nur ein " davor vergessen… so steht es einfach in dieser fehlermeldung
muss ich meiner txt ein komam als trennzeichen setzen oder irgendwas anderes??? bisher hat es super mit tabstopps geklappt… aber das funktioniert mit dem integer nicht…
hier mal die zu importierenden Daten (Projektname gekürzt)
215001 Rue
215002 Bau
215003 EFH
215004 Bet
215005 B 2
215006 Kan
215007 Ers
215008 Akt
215009 Neu
215010 Ori
215011 Was
215012 Ber
215013 Mas
215014 Umb
215015 BV
215016 Neu
215017 LPB
215018 Fac
215019 Ers
215020 Beb
215021 Kin
215022 P u
215023 Aus
215024 Umw
215025 Ver
215026 Umw
215027 Bew
215028 Woh
215029 Ber
215030 Ori
215031 Sta
215032 St
215033 San
215034 Abf
215035 Gru
215036 Gru
215037 Fre
215038 Bau
215039 ori
215040 San
215041 Bau
215042 K28
215043 Pol
215044 San
215045 Ori
215046 Ver
215047 Abf
215048 Was
215049 Woh
215050 Bru
215051 Ber
215052 Abn
215054 Nut
215053 Zwe
215055 EFH
215056 ins
215057 Umb
215058 Feu
215059 Mac
215060 Mac
215061 Bew
215062 Sta
215063 Ers
215064 Aus
215065 San
215066 Ber
215067 Ers
215068 Erw
215069 Neu
215070 GW_
215071 Ber
215072 Rad
215073 Nie
215074 4 E
215075 Hel
215076 Det
215077 KCW
215078 Geo
215082 Ber
215079 Aus
215080 Hyd
215083 Kre
215081 ehe
215084 Abf
215085 Ges
215086 Meh
215087 Ers
215088 LPB
215089 San
215090 Kri
215091 Reg
215092 GW_
215093 Ber
215094 Ros
215095 Lae
215096 Ber
215097 Umg
215098 Ori
215099 Erw
215100 Kan
215101 Fus
215102 San
215103 Ver
215104 Tec
215105 Hal
215106 Ber
215107 Ska
215108 Gew
215109 Kop
215110 PSW
215111 Ber
215112 Mon
215113 Ers
215114 PSW
215115 Abf
215116 Neu
215118 Bau
215117 St
215119 Ber
215120 Ori
215121 Sch
215122 Det
215123 Ber
215124 Sta
215125 Ver
215126 Gew
215127 Gew
215128 Win
215129 Ber
215130 Ber
215131 Ber
215132 Bau
215133 Ber
215134 EFH
215135 Neu
215136 Ber
215137 Tra
215138 Aus
215139 Abf
215140 Fac
215141 Fac
215142 Ber
215143 Sch
215144 BV
215145 Med
215146 Ber
215147 BAB
215148 Ber
215149 Beu
215150 Woh
215151 Bau
215152 Hyd
215153 PSW
215154 PSW
215155 Rue
215156 Stu
215157 Ori
215158 Erg
215159 B 2
215160 Ber
215161 Bew
215162 Sta
215163 Ber
215164 Ber
215165 Ers
215166 SKZ
215167 Fac
215168 Neu
215169 Ber
215170 Lag
215171 Abf
215172 Erw
215173 Ber
215174 Meh
215175 Ert
215176 Neu
215177 Aus
215178 Ber
215179 Was
215180 PSW
215181 Ver
215182 Ber
215183 Ori
215184 Umg
215185 Erw
215186 Erw
215187 Ori
215188 Dek
215189 Abf
215190 Erg
215191 Fun
215192 Anb
215193 Ers
215194 BV
215195 Ers
215196 Abf
215197 Fac
215198 Zus
215199 Ers
215200 Dr.
215201 Bah
215202 Hyd
215203 PSW
215204 Meh
215205 Tie
215206 Bau
215207 Tan
215208 Stu
215209 EFH
215210 Pro
215211 GW_
215212 Was
215213 Erg
215214 Anb
215215 Ber
215216 Anb
215217 Ers
215218 Feu
215219 BV
215220 Ers
215221 Mod
215222 Meh
215223 Was
215224 Ver
215225 Bem
215226 BAB
215227 Was
215228 Ber
215229 Was
215230 Erw
215231 Ori
215232 Fac
215233 Abb
215234 Hal
215235 2.
215236 Sta
215237 Ori
215238 Gra
215239 Fel
215240 Was
215245 Ber
215241 Tra
215242 BV
215243 Bau
215244 GW_
215246 Ver
215247 Ver
215248 Ver
215249 Pro
215250 Ver
215251 Ber
215252 Bru
215253 Kan
215254 Ori
215255 Ber
215256 Erw
215257 Par
215258 Abf
215260 Gru
215259 REW
215261 Han
215262 Beb
215263 Beb
215264 Sta
215265 LNG
215266 GW-
215267 Ver
215268 EFH
215270 St
215269 Ber
215271 Spr
215272 Anb
215273 Bau
215274 Bes
215275 Stu
215276 Abf
215277 Ver
215278 Ver
215279 Abf
215280 Ori
215281 Ori
215282 PSW
215283 Ber