MINI MINI MANI MO
%
% Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
%
\name{ore.pull}
\alias{ore.pull}
\alias{ore.pull,ANY-method}
\alias{ore.pull,list-method}
\alias{ore.pull,ore.date-method}
\alias{ore.pull,ore.factor-method}
\alias{ore.pull,ore.frame-method}
\alias{ore.pull,ore.integer-method}
\alias{ore.pull,ore.logical-method}
\alias{ore.pull,ore.raw-method}
\alias{ore.pull,ore.tblmatrix-method}
\alias{ore.pull,ore.vecmatrix-method}
\alias{ore.pull,ore.vector-method}
\alias{ore.push}
\alias{ore.push,ANY-method}
\alias{ore.push,data.frame-method}
\alias{ore.push,Date-method}
\alias{ore.push,difftime-method}
\alias{ore.push,matrix-method}
\alias{ore.push,POSIXt-method}
\alias{ore.push,vector-method}
\title{
Oracle R Enterprise - Datenaustauschfunktionen
}
\description{
Überträgt Daten per Pull oder Push zwischen einer \R-Session und einem Oracle R Enterprise-
Schema.
}
\usage{
ore.pull(x, ...)
ore.push(x, ...)
}
\arguments{
\item{x}{
Für Funktion \code{ore.pull}, \code{\linkS4class{ore}} Objekte. Für
Funktion \code{ore.push}, \code{vector}, \code{data.frame},
\code{matrix} oder \code{list} Objekte.
}
\item{\dots}{
Zur zukünftigen Erweiterung.
}
}
\details{
Mit den Funktionen \code{ore.push} und \code{ore.pull} werden Daten in einem
Oracle R Enterprise-Schema abgelegt bzw. daraus abgerufen.
Folgende In-Memory-Zuordnungen zwischen \R-Objekten und \code{\linkS4class{ore}}-Objekten
werden unterstützt:
\itemize{
\item \code{logical} wird zugeordnet zu \code{\linkS4class{ore.logical}}
\item \code{integer} wird zugeordnet zu \code{\linkS4class{ore.integer}}
\item \code{numeric} wird zugeordnet zu \code{\linkS4class{ore.numeric}}
\item \code{character} wird zugeordnet zu \code{\linkS4class{ore.character}}
\item \code{factor} wird zugeordnet zu \code{\linkS4class{ore.factor}}
\item \code{raw} wird zugeordnet zu \code{\linkS4class{ore.raw}}
\item \code{Date} wird zugeordnet zu \code{\linkS4class{ore.date}}
\item \code{POSIXt} wird zugeordnet zu \code{\linkS4class{ore.datetime}}
\item \code{difftime} wird zugeordnet zu \code{\linkS4class{ore.difftime}},
\item \code{data.frame} mit Spalten des Typs \code{logical},
\code{integer}, \code{numeric}, \code{character},
\code{factor}, Liste mit \code{raw}, \code{Date}, \code{POSIXct},
\code{difftime} wird zugeordnet zu \code{\linkS4class{ore.frame}}
mit den entsprechenden Spalten eines bestimmten Typs
}
Neben den oben genannten Zuordnungen wird für Funktion \code{ore.push}, sofern die
Eingabe ein \code{list}-Objekt ist, \code{ore.push} rekursiv auf jedes Element
angewendet. Dabei werden die Listenelemente vor dem Speichern
in der Datenbank serialisiert. Das Argument \code{envAsEmptyenv} in \code{\dots}
ist ein logischer Wert, der angibt, ob referenzierte Umgebungen
in den zu speichernden Listenelementobjekten bei der Serialisierung durch
eine leere Umgebung ersetzt werden sollen. Für \code{TRUE} wird die referenzierte
Umgebung mit einer leeren Umgebung ersetzt, deren übergeordnetes Element
\code{.GlobalEnv} ist. Daher wird der Content in der referenzierten Umgebung
nicht serialisiert und nicht in der Datenbank gespeichert. In einigen
Fällen kann dadurch die Größe der gespeicherten Objekte erheblich
verringert werden. Für \code{FALSE} wird der Content in der referenzierten Umgebung
serialisiert und gespeichert und kann durch Aufruf von
\code{ore.pull} deserialisiert und in den Arbeitsspeicher geladen werden. Der Standardwert
wird von der globalen Option \code{ore.envAsEmptyenv} gesteuert.
Bei in der obigen Tabelle genannten In-Memory-\R-Typen werden über die Funktion \code{ore.push}
Objekte erstellt, die die Sortierung der Vektorelemente oder Dataset-Zeilen
des ursprünglichen Datenobjekts beibehalten. Bei allen anderen Datentypen wird
das Verhalten von \code{ore.push} nicht angegeben.
Attribut \code{ora.type} kann für die Angabe der Zuordnung der \R-Typen
\code{character} und \code{factor} zu \code{CLOB} und
des \R-Typs \code{raw} zu \code{BLOB} verwendet werden. \code{ora.type} übernimmt den Zeichenkettenwert
\code{"clob"} bzw. \code{"blob"} in diesen beiden Fällen.
}
\value{
Funktion \code{ore.pull} gibt ein speicherresidentes \R-Objekt zurück, das die
entsprechenden speicherresidenten Daten enthält.
Funktion \code{ore.push} gibt ein \code{\linkS4class{ore}}-Objekt
des geeigneten Typs zurück.
}
\references{
\href{http://www.oracle.com/technetwork/database/database-technologies/r/r-enterprise/documentation/index.html}{Oracle R Enterprise}
}
\author{
Oracle \email{oracle-r-enterprise@oracle.com}
}
\seealso{
\code{\link{ore.ls}},
\code{\linkS4class{ore.frame}},
\code{\linkS4class{ore.matrix}},
\code{\linkS4class{ore.vector}}
\code{\link{ore.options}}
}
\examples{
vec <- 1:10
oreVec <- ore.push(vec)
class(oreVec)
vec2 <- ore.pull(oreVec)
class(vec2)
oreVec3 <- ore.push(oreVec)
class(oreVec3)
vec
oreVec
vec2
oreVec3
IRIS <- ore.push(iris)
class(IRIS)
new.iris <- ore.pull(IRIS)
class(new.iris)
head(IRIS)
head(new.iris)
vraw <- raw(2000L)
oreRaw <- ore.push(vraw)
class(oreRaw)
new.vraw <- ore.pull(oreRaw)
class(new.vraw)
length(new.vraw)
vbraw <- raw(3000L)
attr(vbraw, "ora.type") <- "blob"
oreBRaw <- ore.push(vbraw)
class(oreBRaw)
new.vbraw <- ore.pull(oreBRaw)
class(new.vbraw)
length(new.vbraw)
attr(iris$Species, "ora.type") <- "clob"
iris$Species.raw <- lapply(iris$Species,
function(x) charToRaw(as.character(x)))
attr(iris$Species.raw, "ora.type") <- "blob"
IRIS2 <- ore.push(iris)
class(IRIS2)
new.iris2 <- ore.pull(IRIS2)
class(new.iris2)
}
\keyword{data}
\keyword{database}
\keyword{ORE}
OHA YOOOO