Spalte mit statischen Wert

Programmierung mit PostgreSQL (C#, PHP, Perl, Java, ...)
Antworten
josef911
Neuer Benutzer
Beiträge: 2
Registriert: Do 28. Apr 2016, 15:15

Spalte mit statischen Wert

Beitrag von josef911 » Do 28. Apr 2016, 15:29

Hallo Zusammen,

ich übertrage gerade alte Projekte von meinem Microsoft SQL-Server auf den neuen Postgre-SQL-Server.

Dabei bin ich auf folgendes Problem gestoßen.

Im Microsoft SQL-Server konnte man über die Syntax 'Inhalt' as Test den Wert Inhalt einfach in die Spalte Test einfügen.

Dieses Vorgehen funktioniert leider nicht unter Postgresql.

Hat dazu jemand eine Lösung?

Vielen Dank im Voraus.
Zuletzt geändert von josef911 am Do 28. Apr 2016, 16:39, insgesamt 1-mal geändert.

Gisman
Erfahrener Benutzer
Beiträge: 1098
Registriert: Fr 20. Jan 2006, 15:30
Wohnort: Pfalz
Kontaktdaten:

Re: Spalte mit statischen Wert

Beitrag von Gisman » Do 28. Apr 2016, 16:02

Schreib doch bitte wie du genau vorgehst. Ich zumindest kann mir im Moment nicht so richtig vorstellen was du machst.

Viele Grüße

Uwe

josef911
Neuer Benutzer
Beiträge: 2
Registriert: Do 28. Apr 2016, 15:15

Re: Spalte mit statischen Wert

Beitrag von josef911 » Do 28. Apr 2016, 16:48

drop table if exists work.email_alle_datei;
create table work.email_alle_datei as
select
work.email_alle.e_mail,
work.email_alle.vorname,
work.email_alle.name,
work.email_alle.plz as zip,
work.email_alle.strasse as street1,
' ' as street2,
work.email_alle.ort as city,
'DEU' as country,
' ' as company,
'1' as targetgroup
from
work.email_alle
;

Leider werden bei den Spalten street2, country, company und targetgroup die Werte nicht in die Tabelle übertragen.

castorp
Erfahrener Benutzer
Beiträge: 1058
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Spalte mit statischen Wert

Beitrag von castorp » Do 28. Apr 2016, 21:08

Das sieht gut aus. Die Werte werden bei mir übertragen:

http://sqlfiddle.com/#!15/d2f8c/1
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

frastr
Benutzer
Beiträge: 38
Registriert: Di 9. Sep 2014, 12:20
Wohnort: Hoyerswerda, Sachsen

Re: Spalte mit statischen Wert

Beitrag von frastr » Fr 29. Apr 2016, 10:03

Ich verstehe immer noch nicht was du für Werte erwartest?
Das Problem ist das PostgreSQL nicht weiß welcher Datentyp es sein soll, und du dann mit diesen Spalten nicht weiterarbeiten kannst.

Beispiel:

Code: Alles auswählen

# create table test as select relname, '' street2 from pg_class;
WARNUNG:  Spalte „street2“ hat Typ „unknown“
DETAIL:  Relation wird trotzdem erzeugt.
SELECT 311
Zeit: 129,337 ms
# \d test
     Tabelle „public.test“
 Spalte  |   Typ   | Attribute
---------+---------+-----------
 relname | name    |
 street2 | unknown |
WARNUNG: Spalte „street2“ hat Typ „unknown“

Also entweder nur das

Code: Alles auswählen

create table .. as select ...
mit den vorhandenen Spalten ausführen. Und die zusätzlichen Spalten per

Code: Alles auswählen

alter table ... add street2 varchar(100)
hinzufügen.

Oder zuerst die Tabelle sauber definieren. Und dann mit einem

Code: Alles auswählen

insert into test ( relname, street2) select relname, null from pg_class;

die Daten importieren.

castorp
Erfahrener Benutzer
Beiträge: 1058
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Spalte mit statischen Wert

Beitrag von castorp » Fr 29. Apr 2016, 10:45

Das müsste sich ja mit einem einfache cast fixen lassen, oder?

Code: Alles auswählen

create table test as select relname, ''::text street2 from pg_class;
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

frastr
Benutzer
Beiträge: 38
Registriert: Di 9. Sep 2014, 12:20
Wohnort: Hoyerswerda, Sachsen

Re: Spalte mit statischen Wert

Beitrag von frastr » Fr 29. Apr 2016, 11:22

ja funktioniert. Ich würde aber null anstelle von '' verwenden. Da der Inhalt ja noch nicht definiert ist.
Bspw:

Code: Alles auswählen

create table test as select relname, null::varchar(100) street2 from pg_class;

akretschmer
Erfahrener Benutzer
Beiträge: 7480
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Spalte mit statischen Wert

Beitrag von akretschmer » So 1. Mai 2016, 08:56

suchst di sowas?

Code: Alles auswählen

test=# create table blubb as select ''::text as val, 3::int as i, NULL::date as datum;
SELECT 1
test=*# \d blubb
     Table "public.blubb"
 Column |  Type   | Modifiers
--------+---------+-----------
 val    | text    |
 i      | integer |
 datum  | date    |

test=*# select * from blubb;
 val | i | datum
-----+---+-------
     | 3 |
(1 row)

test=*# rollback;
ROLLBACK
test=#
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten