RODBC Teradata复制表
我使用带R的RODBC连接到Teradata 我正在尝试将一个大表RODBC Teradata复制表,r,teradata,rodbc,R,Teradata,Rodbc,我使用带R的RODBC连接到Teradata 我正在尝试将一个大表示例(25GB)从只读数据库复制到工作数据库。这两个数据库在同一个数据库系统下,所以我只需要一个连接 我尝试了sqlQuery、sqlCopy和sqlCopyTable函数,但没有成功 sqlQuery sqlCopy(ch, query='SELECT * FROM READ_ONLY.EXAMPLE', destination = 'WORK.EXAMPLE') Error: cannot allocate
示例
(25GB)从只读
数据库复制到工作
数据库。这两个数据库在同一个数据库系统下,所以我只需要一个连接
我尝试了sqlQuery
、sqlCopy
和sqlCopyTable
函数,但没有成功
sqlQuery
sqlCopy(ch,
query='SELECT * FROM READ_ONLY.EXAMPLE',
destination = 'WORK.EXAMPLE')
Error: cannot allocate vector of size 155.0 Mb
编辑:语法错误已按@dnoeth建议更正
CREATE TABLE WORK.EXAMPLE AS (SELECT * FROM READ_ONLY.EXAMPLE) WITH DATA;
或
我让后一种方法运行15小时,但它没有完成复制
sqlCopy
sqlCopy(ch,
query='SELECT * FROM READ_ONLY.EXAMPLE',
destination = 'WORK.EXAMPLE')
Error: cannot allocate vector of size 155.0 Mb
在创建新表之前,sqlCopy
是否尝试先将数据复制到R的内存中?如果是这样的话,我如何绕过这一步,专门在Teradata服务器上工作?此外,即使使用选项fast=F
,错误仍然存在
如果R的内存有问题,我尝试创建一个1000行的较小表:
sqlCopy(ch,
query='SELECT * FROM READ_ONLY.EXAMPLE SAMPLE 1000',
destination = 'WORK.EXAMPLE')
Error in sqlSave(destchannel, dataset, destination, verbose = verbose, :
[RODBC] Failed exec in Update
22018 0 [Teradata][ODBC Teradata Driver] Data is not a numeric-literal.
In addition: Warning message:
In odbcUpdate(channel, query, mydata, coldata[m, ], test = test, :
character data '2017-03-20 12:08:25' truncated to 15 bytes in column 'ExtractionTS'
使用此命令,实际上创建了一个表,但它只包含列名,没有任何行
sqlCopyTable
sqlCopyTable(ch,
srctable = 'READ_ONLY.EXAMPLE',
desttable = 'WORK.EXAMPLE')
Error in if (as.character(keys[[4L]]) == colnames[i]) create <- paste(create, :
argument is of length zero
sqlCopyTable(ch,
srctable='READ_ONLY.EXAMPLE',
desttable='WORK.EXAMPLE')
if(as.character(key[[4L]])==colnames[i])create中出错sqlQuery中的语法不正确,缺少带数据的选项:
CREATE TABLE WORK.EXAMPLE AS (SELECT * FROM READ_ONLY.EXAMPLE) WITH DATA;
注意,这将释放所有NOTNULL&CHECK约束和所有索引,导致第一列作为非唯一主索引
手动添加PI或切换到
CREATE TABLE WORK.EXAMPLE AS READ_ONLY.EXAMPLE WITH DATA;
如果只读。示例是一个表,您实际上需要一个精确的副本 谢谢大家!!后一个建议也很有用,但我刚刚了解到我使用的是“视图”而不是“表”,后一个命令不使用“视图”。我想知道sqlCopy和sqlCopyTable是否也因为这种视图/表的区别而失败。@Maarölli:sqlCopy
似乎在本地卸载数据,然后插入到新表中。