gpt4 book ai didi

R中的sqlSave以创建数据帧并将其保存到sql表

转载 作者:行者123 更新时间:2023-12-03 19:58:01 26 4
gpt4 key购买 nike

嗨,我正在使用 R 将数据框保存到 DB2 SQL 表中。我似乎能够创建表骨架,但不能将数据附加到表中 -

>df <- read.csv("dat.csv")

其中 dat.csv 是一个没有标题的 csv,只有两列中的原始数据

然后我创建表:
>sqlQuery(channel, "create table sqltable 
(
col1 int,
col2 float
)"
(

我通过能够在数据库上选择空表“sqltable”来确认表是创建的

所以现在我需要通过执行以下操作将“dat.csv”中的数据添加到“sqltable”中:
>sqlSave(channel, df, "sqltable", verbose=T, fast=T, append=T)

no: 1 rownames 1/***/no: 2 col1 31105/***/no: 3 col2 0.001/***/
no: 2 rownames 1/***/no: 2 col1 31106/***/no: 3 col2 0.023/***/
no: 3 rownames 1/***/no: 2 col1 31107/***/no: 3 col2 1.456/***/
no: 4 rownames 1/***/no: 2 col1 31108/***/no: 3 col2 0.001/***/
no: 5 rownames 1/***/no: 2 col1 31109/***/no: 3 col2 2.102/***/

一切似乎都很好,直到我这样做:
>sqlQuery(channel,"select * from sqltable")

[1] COL1 COL2
<0 rows> or 0-length row.names

sqlSave 命令清楚地从 dat.csv 中获取数据,那么为什么不将其添加到表中?我究竟做错了什么?

最佳答案

在 sqlSave 中定义 varTypes 是个好主意。这是我如何做到的。 :-)

columnTypes <- list(ColumnName="varchar(255)", NumberColumn="float", datecolumn="date")

这定义了数据的列类型,以便您可以在 sqlSave 中添加参数。所以让我们现在做 sqlSave。
sqlSave(channel, YourTable, rownames = FALSE, varTypes = columnTypes)

如果已经添加了表,那么我会在此之前执行 sqlDrop。

为什么这是一个答案?

好吧,我遇到了同样的问题。我收到一条错误消息,说它无法执行 sqlSave,但它正在将我的列放入数据库中。所以我不得不修复 columnTypes。 R 尝试手动完成,但并不完美。 :-)

关于R中的sqlSave以创建数据帧并将其保存到sql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21934564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com