当你打电话的时候
dbWriteTable
具有
overwrite=TRUE
您告诉MySQL删除该表并重新创建一个新表。在您的例子中,它只使用它知道的三列(即您传递给它的内容)创建一个新表。一种选择是将其他两列添加到数据框中:
DF$ID <- NA
DF$CreateDate <- NA
然后,拨打当前电话。我希望
NA
值将映射到
NULL
在MySQL中,这与执行
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)
现在,您可以直接附加到现有的表中。但是,您尚未指定非
空值
的值
身份证件
和
CreateDate
列。所以这个选项要求
创建时间
可为Null。如果
身份证件
是自动递增的,那么我希望MySQL能够使用此选项自动分配id。