【问题标题】:Bulkload option exporting data from R to Teradata using RODBC使用 RODBC 将数据从 R 导出到 Teradata 的批量加载选项
【发布时间】:2017-09-03 03:36:54
【问题描述】:

我对如何通过 R 将 .txt 中的海量数据上传到 Teradata DB 进行了很多研究。我尝试使用 RODBC 的sqlSave(),但它不起作用。我还关注了其他一些类似的问题,例如: Write from R to Teradata in 3.0Export data frame to SQL server using RODBC packageHow to quickly export data from R to SQL Server

但是,由于 Teradata 的结构与 MS SQL 服务器不同,因此建议的大多数选项不适用于我的情况。 我知道有一个 TeradataR 软件包可用,但它自 2-3 年前以来一直没有更新。

以下是我面临的两个主要问题: 1. 如果有任何方法,如何使用 R 将 .txt 格式的数据批量加载(一次所有记录)到 Teradata。 (到目前为止,我只尝试使用 SAS 来做到这一点,但我需要在 R 中探索这一点) 2.数据很大,像 500+ MB,所以我无法通过 R 加载它,我确信有办法解决这个问题,但直接从服务器中提取数据。

这是我根据其中一篇文章尝试的,但这是针对 MS SQL 服务器的:

toSQL = data.frame(...) #this doesn't work for me cause its too big.
write.table(toSQL,"C:\\export\\filename.txt",quote=FALSE,sep=",",row.names=FALSE,col.names=FALSE,append=FALSE);

    sqlQuery(channel,"BULK
                INSERT Yada.dbo.yada
                FROM '\\\\<server-that-SQL-server-can-see>\\export\\filename.txt'
                WITH
                (
                FIELDTERMINATOR = ',',
                ROWTERMINATOR = '\\n'
                )");

*注意:Teradata 中有一个插入/导入数据的选项,但这与编写数百万行插入语句相同。

抱歉,我目前没有示例代码,因为我找到的包不是我应该使用的正确包。

有人遇到过类似的问题吗?

非常感谢您提前提供的帮助!

【问题讨论】:

  • 为此使用 Teradata 实用程序 - 多负载 (mload) 就是您想要的。

标签: r teradata bulkinsert rodbc bulk-load


【解决方案1】:

我不确定您是否知道如何执行此操作,但我支持 Andrew 的解决方案。如果您的计算机上安装了 Teradata,您可以轻松地从 shell 运行 FastLoad 实用程序。

所以我会:

  1. 按数据框导出到txt文件(逗号分隔)
  2. 创建我的快速加载脚本并从快速加载脚本中调用导出的 txt 文件(您可以了解更多信息here
  3. 运行引用我的快速加载脚本的 shell 命令。

    setwd("pathforyourfile")
    write.table(mtcars, "mtcars.txt", sep = ",", row.names = FALSE,quote= FALSE, na = "NA",col.names = FALSE)
    shell("fastload < mtcars_fastload.txt")
    

我希望这可以解决您的问题。如果您需要帮助,尤其是在快速加载脚本方面,请告诉我。非常乐意提供帮助。

【讨论】:

    猜你喜欢
    • 2019-10-28
    • 2015-03-20
    • 1970-01-01
    • 2016-10-03
    • 2014-08-31
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多