使用data.frame R数据库使用ODBCConnect TERADATA FASTLOAD创建表

时间:2017-02-22 19:42:05

标签: r dataframe odbc

我使用ODBC和 R 连接到数据库(Teradata),这适用于连接。我有一个包含2列/变量的data.frame。

有没有办法说:(创建表名为Select * from data.frame)

基本上我想将data.frame导入表格。

这有效:

sqlSave(con, datafile, tablename = "TABLE.NAME", rownames = FALSE, append = TRUE, fast = TRUE)

这样可行,但这是一个缓慢的过程,无论如何都要实现FastLoad / TPump,或类似的东西?当我有更大的文件?

请举例说明。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~

sessions 2;
errlimit 25;
logon tdpid/ID,PASSWORD;

CREATE TEST_FAST_UPLOAD (
       CUST_KEY INTEGER,
       HOUSEHOLD_KEY INTEGER ) ;

set record TEXT;

define
       CUST_KEY( integer,
       HOUSEHOLD_KEY( integer,
       )

file=insert.input;

show;

begin loading TEST_FAST_UPLOAD errorfiles TEST_FAST_UPLOAD_ERR;

insert into TEST_FAST_UPLOAD(
       :CUST_KEY,
       :HOUSEHOLD_KEY
);

end loading;

1 个答案:

答案 0 :(得分:0)

我其实只是自己解决了这个问题。以下是我的表现方式:

  1. 使用gdata包中的write.fwf()将data.frame保存到固定宽度的文件中。例如write.fwf(x = dataFrame, file = "dataFile.txt", sep = "", colnames = FALSE, width = c(20, 20))
  2. 将快速加载脚本创建为txt文件,例如fastLoadExampleScript.txt。如果您需要帮助,我建议从http://www.info.teradata.com/HTMLPubs/DB_TTU_13_10/index.html#page/Load_and_Unload_Utilities/B035_2411_020A/2411Ch01.03.24.html开始。一些重要的注意事项:(a)使用write.fwf和sep =""正如我所做的那样,你不需要任何delim或newlinechar,(b)使用SET RECORD TEXT并确保函数中指定的宽度应该与快速加载脚本的DEFINE部分中的宽度相匹配。
  3. 首先将setwd()添加到包含dataFile.txt和fastLoadExampleScript.txt的目录中。然后运行shell("fastload < fastLoadExampleScript.txt")
  4. 编辑: 关于脚本,除了DEFINE部分之外,大部分看起来都很好,我认为应该是

    define
           CUST_KEY(char(20)),
           HOUSEHOLD_KEY(char(20))