Begrenzte Listendarstellung

der der das Verbrochen hat meldet sich leider nicht mehr!!

das mit dem Datum bring ich nicht auf die Reihe, vielleicht haben wir uns falsch verstanden.
zur Vereinfachung meiner Selects würde ich gerne mit einen Datum in dieser Art arbeiten tt.mm.jjjj ich hab aber in meinen Tabellen das Datum in Form von date_time= Fri May 11 2018 20:01:41 GMT+0200 (CEST) oder als beg_timestamp=1520373303652

test=*# select regexp_replace(regexp_replace('Fri May 11 2018 20:01:41 GMT+0200 (CEST)','\(.*\)',''),'GMT+','')::timestamptz;
     regexp_replace     
------------------------
 2018-05-11 20:01:41+02
(1 row)

--
--
--

test=*# SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 1130317518.61997 * INTERVAL '1 second';
           ?column?           
------------------------------
 2005-10-26 11:05:18.61997+02
(1 row)

Du solltest das in den Tabelle am besten direkt ändern …

wie kann ich das in der Tabelle direkt ändern, macht das überhaupt Sinn denn neue Einträge werden ja wie bisher weitergeschrieben?

naja, wenn das weiter so reingeschrieben wird dann macht es keinen Sinn… Ansonsten: ALTER TABLE wäre Dein Freund…

hab noch eine andere Frage, wie verhält sich das mit der “id” die die Datenbank ja selbst vergibt, wenn ich Neue Daten aus einer CSV Datei mit copy in die bestehende Tabelle einfügen möchte?
ERROR: FEHLER: NULL-Wert in Spalte »shooters_id« verletzt Not-Null-Constraint

einfach beim COPY angeben, daß für diese Spalte keine Daten kommen:

test=*# create table bla (id serial primary key, val int);
CREATE TABLE
test=*# copy bla(val) from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF signal.
>> 10
>> 23
>> 23
>> 12
>> 22
>> \.
COPY 5
test=*# select * from bla;
 id | val 
----+-----
  1 |  10
  2 |  23
  3 |  23
  4 |  12
  5 |  22
(5 rows)

test=*#

ERROR: FEHLER: fehlende Daten für Spalte »shooters_id«
. mag er nicht
wenn ich dann doch eine Zahl eingebe die deutlich größer ist als die letzte vergebene meint er die existiert schon

nur die Fehlermeldung zu zeigen und nicht das, was Du versuchst hast, macht es schwer, den Fehler zu benennen …

alles zurück!! einfügen funktioniert,
wie heißt es doch so schön, die meisten Fehler sitzen vor dem PC

wohin kann die Rechnung geschickt werden?

ich hoffe du, ihr helft mir trotzdem weiter , die Fragen kommen so nach und nach

na, davon kann ich meine 3 Kinder aber nicht ernähren …

Ist es möglich eine Gruppe von Einzelzahlen als Summe der Gruppe anzuzeigen
Name, Gruppe,Zahl Summe
a,1,100,500
b,1,200,500
c,1,50,500
d,1,150,500

die 500 = Summe der Zahlen aus a bis d

laut Frau Google, sum(Zahl) over (partition by Gruppe) as Summe
aber das scheint mit postgres nicht zu funktionieren.

vielleicht gibt es ja eine Lösung.

Klar funktioniert das mit Postgres:

select name, gruppe, zahl, sum(zahl) over () as summe
from the_table;

Online Beispiel: https://rextester.com/SJO70932

Oder mit partition by:

select name, gruppe, zahl, sum(zahl) over (partition by gruppe) as summe
from the_table;

Beispiel: https://rextester.com/KFCR38036

Grrrrrrrrrr, aber nicht mit meinem Programmierer, der scheibt Ergebnisse in Felder die nicht sum() kompatibel sind,Funktion sum(character varying) existiert nicht, und dazu ein unerfahrener user(ich).
Danke , mit deiner Bestätigung bin ich auf andere Spalten umgestiegen und hab mir die “Zahl” aus ihren Bestandteilen zusammen gesucht.
Jetzt funktioniert es wie gewünscht.Danke

Ich glaube bei euch ist mal eine Datenbank Schulung für Entwickler fällig…

Man sollte es nicht glauben,
aber der Ersteller dieser Datenbank arbeitet bei einer Firma die seit den 50er Jahren für die Ergebnisdarstellung der Olympischen Spiele verantwortlich ist.

Egal hab jetzt was ich brauche, kommt Zeit kommt Rat.

Ich Dank euch für eure Geduld

Hallo da bin ich schon wieder mit einen Problem.

Ich hab eine Datei als “eg2018.csv” angelegt und möchte deren Inhalt in eine vorhandene Tabelle mit dem Befehl
“copy home.shooters from ‘C:\eg2018.csv’ DELIMITER ‘,’ csv Header;”
auf die auf meinem Home PC angelegte Datenbank einfügen, was auch zu 100% problemlos funktioniert.

Nun zu meinem Problem, wenn ich die Datei mit dem gleichen Befehl in die Orginal Datenbank auf einem raspberry einlesen möchte bekomme ich die
Fehlermeldung:

FEHLER: nur Superuser können COPY mit Dateien verwenden
HINT: Jeder kann COPY mit STDOUT oder STDIN verwenden. Der Befehl \copy in psql funktioniert auch für jeden

wie würde der Befehl mit STDIN lauten um die Datei einlesen zu können. meine bisherigen Versuche verliefen alle negativ
Gibt es noch andere Möglichkeiten Daten aus einer Datei einzufügen?
die Superuserrechte liegen bei beiden Datenbanken bei postgres die beiden Datenbanken wurden auch mit den gleichen Benutzernamen und Passwörtern installiert.

Vielleicht weiß jemand wie ich das Problem lösen könnte

Hatten die obige Fehlermeldung auch auf meinem 2. PC hatte die Datei dort aber im Ordner Dokumente liegen mit entsprechendem Verzeichnis im Copy Befehl. Als ich die Datei dann direkt auf C:\ legte hat es dann funktioniert.

Wenn du dich per psql mit der Datenbank verbindest, sollte der Fileimport mit \copy funktionieren WIMRE. Dazu muß sie dann aber für den Server lokal zugänglich sein.

Im Link ist ein Hinweis, wie du das Skripten kannst. Allerdings für Linux :wink:

Gruß Uwe

Es reicht, wenn Du das copy in ein \copy änderst:

\copy home.shooters from 'C:\eg2018.csv' DELIMITER ',' csv Header;

COPY erwartet die Datei auf dem Server auf dem Postgres läuft - und die wird dann von dem Postgres Prozess gelesen.

Das \copy in psql hingegen liest die Datei auf dem Rechner auf dem psql läuft und schickt sie dann an den Postgres server.

Auch wenn Postgres auf dem gleichen Rechner läuft auf dem Du psql startest, macht dies einen Unterschied.