R MYSQL Write table 删除某些列
R MYSQL Write table deletes ccertain columns
我在 MySQL 中有以下 table 和以下列
tbl= ID(Integer(11)) Keyword(Varchar(55)) Estimate(DECIMAL(10,4))
Error(DECIMAL(10,4)) CreateDate(DateTime)
这些变量 ID 和 CreateDate 是系统生成的,即我在从 R
写入 table 时不需要生成相同的变量
我正在将以下数据框写入此 table
DF<- Keyword Estimate Error
a 23 2
b 21 6
c 20 5
我正在使用以下代码使用 DBWriteTable 命令(R SQ lite 包)编写此代码
dbWriteTable(conn, value = DF, name='tbl', overwrite=T, append=F,
field.type=list(Keyword='varchar(100)', Estimated='DECIMAL(10,4)',
Error='Decimal(10,4)'),row.names=FALSE)
现在这会导致其中两列,即 ID 和 Date 列在最后的 mysql table 中消失。
我不确定为什么会这样。我还没有下命令删除专栏我请求有人看一下并指导我。
当您用 overwrite=TRUE
调用 dbWriteTable
时,您是在告诉 MySQL 删除 table 并重新创建一个新的。在您的情况下,它正在创建一个新的 table 使用它知道的唯一三列,即您传递给它的内容。一种选择是将其他两列添加到您的数据框中:
DF$ID <- NA
DF$CreateDate <- NA
然后,拨打您当前的电话。我希望 NA
值将映射到 MySQL 中的 NULL
,这与执行 INSERT
而不为这些列指定值的行为一致。这里有一个潜在的问题,因为 MySQL 可能不知道 ID
是一个自增列。所以我不是很喜欢这个方案。
根据您的想法,另一种方法是进行以下调用:
dbWriteTable(conn, value = DF, name='tbl', overwrite=FALSE, append=TRUE,
field.type=list(Keyword='varchar(100)', Estimated='DECIMAL(10,4)',
Error='Decimal(10,4)'),row.names=FALSE)
现在您可以只附加到已经存在的 table。尽管如此,您还没有为 ID
和 CreateDate
列指定非 NULL
值。所以这个选项要求 CreateDate
可以为空。如果 ID
是自动递增,那么我希望 MySQL 能够使用此选项自动分配一个 id。
我在 MySQL 中有以下 table 和以下列
tbl= ID(Integer(11)) Keyword(Varchar(55)) Estimate(DECIMAL(10,4))
Error(DECIMAL(10,4)) CreateDate(DateTime)
这些变量 ID 和 CreateDate 是系统生成的,即我在从 R
写入 table 时不需要生成相同的变量我正在将以下数据框写入此 table
DF<- Keyword Estimate Error
a 23 2
b 21 6
c 20 5
我正在使用以下代码使用 DBWriteTable 命令(R SQ lite 包)编写此代码
dbWriteTable(conn, value = DF, name='tbl', overwrite=T, append=F,
field.type=list(Keyword='varchar(100)', Estimated='DECIMAL(10,4)',
Error='Decimal(10,4)'),row.names=FALSE)
现在这会导致其中两列,即 ID 和 Date 列在最后的 mysql table 中消失。
我不确定为什么会这样。我还没有下命令删除专栏我请求有人看一下并指导我。
当您用 overwrite=TRUE
调用 dbWriteTable
时,您是在告诉 MySQL 删除 table 并重新创建一个新的。在您的情况下,它正在创建一个新的 table 使用它知道的唯一三列,即您传递给它的内容。一种选择是将其他两列添加到您的数据框中:
DF$ID <- NA
DF$CreateDate <- NA
然后,拨打您当前的电话。我希望 NA
值将映射到 MySQL 中的 NULL
,这与执行 INSERT
而不为这些列指定值的行为一致。这里有一个潜在的问题,因为 MySQL 可能不知道 ID
是一个自增列。所以我不是很喜欢这个方案。
根据您的想法,另一种方法是进行以下调用:
dbWriteTable(conn, value = DF, name='tbl', overwrite=FALSE, append=TRUE,
field.type=list(Keyword='varchar(100)', Estimated='DECIMAL(10,4)',
Error='Decimal(10,4)'),row.names=FALSE)
现在您可以只附加到已经存在的 table。尽管如此,您还没有为 ID
和 CreateDate
列指定非 NULL
值。所以这个选项要求 CreateDate
可以为空。如果 ID
是自动递增,那么我希望 MySQL 能够使用此选项自动分配一个 id。