Datensätze kopieren mit gleichzeitigem Ändern der Suchbegriffes ?

Datensätze kopieren mit gleichzeitigem Ändern der Suchbegriffes ?

am 04.05.2006 09:53:33 von Dieter Hummel

Hallo NG,

gibt es eine Möglichkeit mehrere Datensätze (von 10 - 100) mit einem
Befehl zu kopieren und gleichzeitig den Suchbegriff zu ändern.

Datenbank ist Oracle 9.2


z.B.
Suchbegriffe
100000003001
100000003002
100000003003
100000003004
..
..


neue Suchbegriffe
100000004001
100000004002
100000004003
100000004004
..
..


Danke und Gruß
Dieter

Re: Datensätze kopieren mit gleichzeitigem Ändern der Suchbegriffes ?

am 04.05.2006 12:54:59 von Kai Ruhnau

Dieter Hummel wrote:
> Hallo NG,
>
> gibt es eine Möglichkeit mehrere Datensätze (von 10 - 100) mit einem
> Befehl zu kopieren und gleichzeitig den Suchbegriff zu ändern.
>
> Datenbank ist Oracle 9.2
>
>
> z.B.
> Suchbegriffe
> 100000003001
> 100000003002
> 100000003003
> 100000003004
> .
> .
>
>
> neue Suchbegriffe
> 100000004001
> 100000004002
> 100000004003
> 100000004004
> .
> .

Suchst du

INSERT INTO ... SELECT feld+1000 FROM ... WHERE ...

?

Grüße
Kai

--
This signature is left as an exercise for the reader.

Re: Datensätze kopieren mit gleichzeitigem Ändern der Suchbegriffes ?

am 04.05.2006 16:28:21 von Dieter Hummel

Kai Ruhnau schrieb:
> Dieter Hummel wrote:
>> Hallo NG,
>>
>> gibt es eine Möglichkeit mehrere Datensätze (von 10 - 100) mit einem
>> Befehl zu kopieren und gleichzeitig den Suchbegriff zu ändern.
>>
>> Datenbank ist Oracle 9.2
>>
>>
>> z.B.
>> Suchbegriffe
>> 100000003001
>> 100000003002
>> 100000003003
>> 100000003004
>> .
>> .
>>
>>
>> neue Suchbegriffe
>> 100000004001
>> 100000004002
>> 100000004003
>> 100000004004
>> .
>> .
>
> Suchst du
>
> INSERT INTO ... SELECT feld+1000 FROM ... WHERE ...
>
> ?

weiß nicht so recht.

Versuchs noch mal zu erklären.

x Datensätze mit je 40 Spalten will ich auf einen Rutsch kopieren und
muss ja zwangsläufig ja auch den SB ändern (primary key)

Sonst müsste ich jeden der x Datensätze lesen, den SB ändern und neu
anlegen. Das dauert zu lange :-(

>
> Grüße
> Kai

Gruß
Dieter

Re: Datensätze kopieren mit gleichzeitigem Ändern der Suchbegriffes ?

am 04.05.2006 18:34:27 von Johannes Vogel

Hi Dieter

Dieter Hummel wrote:
> Kai Ruhnau schrieb:
>> Dieter Hummel wrote:
>>> gibt es eine Möglichkeit mehrere Datensätze (von 10 - 100) mit einem
>>> Befehl zu kopieren und gleichzeitig den Suchbegriff zu ändern.
>>> Datenbank ist Oracle 9.2
>>> z.B.
>>> Suchbegriffe
>>> 100000003001
>>> 100000003002
>>> 100000003003
>>> 100000003004
>>> .
>>> neue Suchbegriffe
>>> 100000004001
>>> 100000004002
>>> 100000004003
>>> 100000004004
>>> .
>> Suchst du
>> INSERT INTO ... SELECT feld+1000 FROM ... WHERE ...
> x Datensätze mit je 40 Spalten will ich auf einen Rutsch kopieren und
> muss ja zwangsläufig ja auch den SB ändern (primary key)
> Sonst müsste ich jeden der x Datensätze lesen, den SB ändern und neu
> anlegen. Das dauert zu lange :-(

Suchst du
insert into tabelle2
select * from tabelle1
where id between 100000004001 and 100000004099
or id between 100000003001 and 100000003099;

HTH; Johannes

Re: Datensätze kopieren mit gleichzeitigem Ändern der Suchbegriffes ?

am 05.05.2006 08:20:38 von Fabian Schladitz

Dieter Hummel schrieb:
> Kai Ruhnau schrieb:
>=20
>> Dieter Hummel wrote:
>>
>>> gibt es eine Möglichkeit mehrere Datensätze (von 10 - 100) mit ei=
nem=20
>>> Befehl zu kopieren und gleichzeitig den Suchbegriff zu ändern.
>>>
>>> Datenbank ist Oracle 9.2
>>>
>>> z.B.
>>> Suchbegriffe
>>> 100000003001
>>> 100000003002
>>> 100000003003
>>> 100000003004
>>> .
>>>
>>> neue Suchbegriffe
>>> 100000004001
>>> 100000004002
>>> 100000004003
>>> 100000004004
>>> .
>>
>> Suchst du
>>
>> INSERT INTO ... SELECT feld+1000 FROM ... WHERE ...
>=20
>=20
> weiß nicht so recht.

Doch tust du, wie es scheint. Leider gibst du kein Feedback und=20
verwendest Begriffe, welche nicht eindeutig belegt sind.


> Versuchs noch mal zu erklären.
>=20
> x Datensätze mit je 40 Spalten will ich auf einen Rutsch kopieren und=
=20
> muss ja zwangsläufig ja auch den SB ändern (primary key)

Du willst Datensätze innerhalb einer Tabelle kopieren und musst dabei=20
eine Spalte anpassen um den PK nicht zu verletzen.

> Sonst müsste ich jeden der x Datensätze lesen, den SB ändern und =
neu=20
> anlegen. Das dauert zu lange :-(

Richtig. Frage ist nun, wie dein PK definiert ist. Hast du da eine=20
Sequence? Oder ist das nur ein Unique-Constraint?
Wie fügst du derzeit Daten in die Tabelle ein?

--=20
HTH,
Fabian

Re: Datensätze kopieren mit gleichzeitigem Ändern der Suchbegriffes ?

am 05.05.2006 10:12:18 von Dieter Hummel

Fabian Schladitz schrieb:
> Dieter Hummel schrieb:
>> Kai Ruhnau schrieb:
>>
>>> Dieter Hummel wrote:
>>>
>>>> gibt es eine Möglichkeit mehrere Datensätze (von 10 - 100) mit einem
>>>> Befehl zu kopieren und gleichzeitig den Suchbegriff zu ändern.
>>>>
>>>> Datenbank ist Oracle 9.2
>>>>
>>>> z.B.
>>>> Suchbegriffe
>>>> 100000003001
>>>> 100000003002
>>>> 100000003003
>>>> 100000003004
>>>> .
>>>>
>>>> neue Suchbegriffe
>>>> 100000004001
>>>> 100000004002
>>>> 100000004003
>>>> 100000004004
>>>> .
>>>
>>> Suchst du
>>>
>>> INSERT INTO ... SELECT feld+1000 FROM ... WHERE ...
>>
>>
>> weiß nicht so recht.
>
> Doch tust du, wie es scheint. Leider gibst du kein Feedback und
> verwendest Begriffe, welche nicht eindeutig belegt sind.
>
>
>> Versuchs noch mal zu erklären.
>>
>> x Datensätze mit je 40 Spalten will ich auf einen Rutsch kopieren und
>> muss ja zwangsläufig ja auch den SB ändern (primary key)
>
> Du willst Datensätze innerhalb einer Tabelle kopieren und musst dabei
> eine Spalte anpassen um den PK nicht zu verletzen.

korrekt

>
>> Sonst müsste ich jeden der x Datensätze lesen, den SB ändern und neu
>> anlegen. Das dauert zu lange :-(
>
> Richtig. Frage ist nun, wie dein PK definiert ist. Hast du da eine
> Sequence? Oder ist das nur ein Unique-Constraint?
> Wie fügst du derzeit Daten in die Tabelle ein?
>

Die PKs setzen sich aus Auftragsnummer, Positionsnummer und einer
fortlaufenden Nummer zusammen.

z.B. Auftragsnummer : 100000
Positionsnummer: 004
lfd. Nummer : 001

ergibt 100000004001 als PK
100000004002
.
.

so, nun soll die Position 004 kopiert werden auf z.B. Position 028
(achso, die Position besteht aus x Datensätzen (Stückliste))

die neuen PKs sind dann, um bei meinem Beispiel zu bleiben,
100000028001
100000028002
..
..

Normal werden die Datensätze mit insert into angelegt.

Der PK ist vom Typ varchar2 (Auftragsnummer kann auch alphanummerisch sein)



Besser kann ich leider mein Problem nicht beschreiben.

Gruß
Dieter

Re: Datensätze kopieren mit gleichzeitigem Ändern der Suchbegriffes ?

am 05.05.2006 13:30:08 von Thomas Rachel

Dieter Hummel wrote:

>> Du willst Datensätze innerhalb einer Tabelle kopieren und musst dabei
>> eine Spalte anpassen um den PK nicht zu verletzen.
>
> korrekt
>
> Die PKs setzen sich aus Auftragsnummer, Positionsnummer und einer
> fortlaufenden Nummer zusammen.
>
> z.B. Auftragsnummer : 100000
> Positionsnummer: 004
> lfd. Nummer : 001
>
> ergibt 100000004001 als PK
> 100000004002
> .
> .

Nebenbei: Die Benutzer- und Programmierfreundlichkeit wäre wesentlich höher,
wenn Du dann 3 Felder hättest mit den angegebenen Funktionen und der PK
sich über die drei Felder erstrecken würde...

> so, nun soll die Position 004 kopiert werden auf z.B. Position 028
> (achso, die Position besteht aus x Datensätzen (Stückliste))
>
> die neuen PKs sind dann, um bei meinem Beispiel zu bleiben,
> 100000028001
> 100000028002
> .
> .
>
> Normal werden die Datensätze mit insert into angelegt.

Wenn man davon ausgehen kann, daß

a) Auftragsnummer gleich bleibt und
b) die lfd wirklich <999 bleibt

dann sollte eine einfache Addition möglich sein, aber...

> Der PK ist vom Typ varchar2 (Auftragsnummer kann auch alphanummerisch
> sein)

.... das ist ungünstig.

Insert into ...
select
concat(
substring(PK,1,6),
lpad(substring(PK,7,3)+(28-4),3,'000'),
substring(PK,10,3)
),
...
from ...;


(vergleiche: Insert into ... select ...,pos+(28-4),... from ... im Falle der
Auftrennung des PK)


HTH,


Thomas