P8000/WEGA/contrib/ingres/dbs/sys/man/copy

213 lines
9.4 KiB
Plaintext

COPY(QL) DABA16 COPY(QL)
NAME
copy - Kopieren von Daten zwischen Relation und MUTOS-File
UEBERSICHT
copy relname (domname = format {, domname = format })
direction "filename"
BESCHREIBUNG
Copy uebertraegt Daten zwischen DABA-Relationen und einem
Standard-MUTOS-File. Relname ist der Name einer bestehenden
Relation. Im allgemeinen identifiziert domname eine Domaene
in der Relation relname. Format bestimmt das Format, das im
MUTOS-File eine Domaene besitzen soll, die mit der spezifi-
zierten Domaene der Relation korrespondiert. Direction
(Richtung) kann entweder into (in) oder from (aus) sein.
Filename ist der vollstaendige Pfadname eines Files.
Bei einem copy aus (from) einem File in eine Relation darf
die Relation keinen Sekundaerindex besitzen, muss dem copy
Nutzer zugeeignet sein und Aenderungsoperationen zulassen
(darf kein Sekundaerindex und keine Systemrelation sein).
Copy darf nicht auf eine virtuelle Relation (Sicht, view)
angewendet werden. Fuer ein copy in (into) ein MUTOS-File
muss der Nutzer entweder Relationseigentuemer sein, bzw. die
Relation muss retrieve Befugnis fuer alle Nutzer oder alle
Befugnisse fuer alle Nutzer haben.
Erlaubte Formate bei copy sind :
i1,i2,i4 - Der Datenwert im MUTOS-File ist als Festkommazahl
(Integer) der Laenge 1, 2 oder 4 Byte gespeichert.
f4,f8 - Der Datenwert im MUTOS-File ist eine Gleitkommazahl
(entweder einfacher oder doppelter Genauigkeit).
c1,c2,...,c255 - Der Datenwert ist als Zeichenkette (String)
fester Laenge gespeichert.
c0 - Zeichenkette variabler Laenge (begrenzt durch
Begrenzerzeichen).
d0,d1,...,d255 - Pseudo(Dummy)-Domaene
Korrespondierende Domaenen der Relation und des MUTOS-File
muessen nicht von gleicher Laenge oder von gleichem Typ
sein. Copy wird, soweit notwendig, Konvertierungen ausfueh-
ren. Bei der Konvertierung, mit Ausnahme von Character in
Character, prueft copy auf Ueberlauf. Bei der Konvertierung
Character in Character wird copy , entsprechende Notwendig-
keit vorausgesetzt, entweder mit Blanks auffuellen oder
rechtsbuendig verkuerzen.
Die Domaenen muessen entsprechend der Reihenfolge im MUTOS-
File spezifiziert werden. Die Zuornung zu den Domaenen in
der Relation erfolgt durch Namenszuordnung.
Copy ist auch nutzbar fuer variabel lange Zeichenketten und
Pseudodomaenen im MUTOS-File. Die ausgefuehrte Aktion ist
von der Uebertragungsrichtung entweder copy into oder copy
from abhaengig. Begrenzer fuer variabel lange Zeichenketten
und fuer Pseudodomaenen koennen aus folgender Liste ausge-
waehlt werden :
nl - Newline-Zeichen
tab - Tabulatorzeichen
sp - Space (Blank)-Zeichen
nul oder null - Nullzeichen "
comma - Komma
colon - Doppelpunkt
dash - Bindestrich
lparen - linke runde Klammer
rparen - rechte runde Klammer
x -bliebiges Einzelzeichen 'x'
Die Spezialbedeutung eines Begrenzers kann durch den unmit-
telbar vorangestellten Backslash "\" aufgehoben werden. Die
Typspezifikation kann in Anfuehrungszeichen (z.B. "c0delim")
eingeschlossen werden. Dies ist bei der Verwendung eines
Zeichens (delim) als Begrenzer bedeutungsvoll, das fuer den
DABA-Parser (Anweisungsanalyse fuer QL-Anweisungen) eine
Sonderbedeutung besitzt.
Bei einer Richtung (direction) aus (from) einem MUTOS-File
fuegt copy Daten an die Relation an. Domaenen der DABA-
Relation, denen aus dem MUTOS-File keine Werte zugewiesen
werden, erhalten einen Standardwert (Null fuer numerische
Domaenen und Leerkette fuer Character-Domaenen). Beim Ko-
pieren aus einem File sind folgende Spezialitaeten aufrufbar
:
c0delim - Der Datenwert im MUTOS-File ist als variabel lange
Zeichenkette gespeichert, die durch den Begrenzer delim
begrenzt wird. Wenn delim im File vermisst wird, be-
grenzt das erste auftretende Komma, Tab-Zeichen oder
Newline-Zeichen die Zeichenkette. Der Begrenzer wird
nicht kopiert.
Beispiele :
tnum=c0 -Zeichenkette endet mit Komma, Tab- oder
Newline-Zeichen.
tnum=c0nl -Zeichenkette endet mit Newline.
tnum=c0sp - Zeichenkette endet mit Space.
tnum="c0z" - Zeichenkette endet mit Zeichen 'z'.
tnum="c0%" - Zeichenkette endet mit Zeichen '%'.
Ein Begrenzer kann in den Daten des Files durch einen
vorgestellten Backslash "\" aufgehoben werden. Zum
Beispiel wird durch name = c0, in der Zeichenkette
"Mueller\, Josef" des Files die Sonderbedeutung des
Kommas als Begrenzer durch den Backslash aufgehoben und
als "Mueller, Josef" in die Domaene aufgenommen.
d0delim - Der Datenwert im MUTOS-File ist als variabel lange
Zeichenkette, durch delim begrenzt, gespeichert. Die
Zeichenkette wird gelesen aber nicht weiter benutzt.
Die Regeln fuer Begrenzer sind mit denen von c0 und d0
identisch. Der Domaenenname wird ignoriert.
d1,d2,...,d255 - Der Datenwert im MUTOS-File ist eine Zei-
chenkette fester Laenge. Sie wird gelesen aber nicht
weiter benutzt. Der Domaenenname wird ignoriert.
Bei einer Richtung into uebertraegt copy Daten aus der Rela-
tion in (into) das MUTOS-File. Wenn das File bereits exi-
stiert, wird es vor dem Beginn des Kopierens auf eine File-
laenge Null verkuerzt. Beim Kopieren in dieser Richtung
sind folgende Spezialitaeten aufrufbar :
c0 - Der Domaenenwert wird in eine Zeichenkette fester La-
enge konvertiert und in das MUTOS-File gespeichert.
Fuer Zeichenketten-Domaenen entspricht die Laenge der
Domaenenlaenge. Fuer numerische Domaenen wird die
Standard-Konvertierung ausgefuehrt, die durch die Flags
"-i", "-f", und "-c" beim DABA-Start (iql(mutos)) spe-
zifiziert wurde.
c0delim - Die Domaene wird entsprechend den Regeln von
c0 konvertiert. Das einzelne Begrenzerzeichen delim
wird unmittelbar nach der Domaene eingefuegt.
d1,d2,...,d255 - Der Domaenenname wird als Name des Begren-
zers verwendet. Dieser Begrenzer wird einmal bei d1 ,
zweimal bei d2, usw. in das MUTOS-File geschrieben.
d0 - Dieses Format wird bei einem copy into ignoriert.
d0delim - Der Begrenzer delim wird in das File geschrieben.
Der Domaenenname wird ignoriert.
Wenn in der copy Anweisung keine Domaenen spezifiziert sind,
(z.B. copy relname () into/from "filename") fuehrt copy au-
tomatisch eine Gesamtkopie, d.h. eine Kopie aller Domaenen
unter Beruecksichtigung der Reihenfolge und der Formate in
der Relation, aus. Damit sind kurze Notationen fuer das
Entladen und Rueckladen vollstaendiger Relationen moeglich.
Um ein copy in eine Relation auszufuehren, muss der Nutzer
Relationseigentuemer sein oder alle Nutzer muessen alle Be-
fugnisse besitzen ( keine Bufugniseinschraenkungen fuer die
Relation). Ebenso muss bei einem copy aus einer Relation
der Anwender Relationseigentuemer sein oder wenigstens re-
trieve Befugnis besitzen. Ein copy auf eine Sicht (view)
ist unstatthaft.
BEISPIEL[E]
/* Kopieren von Daten in die Relation "personal"*/
copy personal (name=c20,gehalt=f4,gebdat=i2,xxx=d1)
from "/mnt/peter/pers1"
/* Kopieren der Namen und Gehaelter in ein File*/
copy personal (name=c0,comma=d1,gehalt=c0,nl=d1)
into "/mnt/klaus/gehalt"
/* Gesamtkopie der Relation "personal" in ein File*/
copy personal ()
into "/mnt/kop/personal"
/* Rueckspeichern der Gesamtkopie aus einem File*/
copy personal ()
from "/mnt/kop/personal"
SIEHE AUCH
append(ql), create(ql), creater(mutos), integrity(ql),
permit(ql), ql(iql), view(ql), iql(mutos)
FEHLERQUELLEN
Copy stoppt die Verarbeitung beim ersten Fehler.
Bei der Spezifikation filename muss der vollstaendige Pfad-
name angegeben werden, da DABA nach dem Aufruf in einem an-
deren Directory als dem momentanen Arbeits-Directory ope-
riert.