我在 R 的数据库中创建了一个表:
dbExecute(conn,"CREATE TABLE IF NOT EXISTS 'dummy' (
ID INTEGER PRIMARY KEY,
InChikey TEXT UNIQUE,
InChi TEXT NOT NULL,
Classification BLOB)")
我想用数据帧填充表,InChikey
应该UNIQUE
。我使用了以下命令:
dbAppendTable(conn, "dummy", dataset_class)
dataset_class
是一个dataframe
.但是我收到错误消息:Error: UNIQUE constraint failed: dummy.InChikey
以下是我的数据集的前 2 行:
Inchikey | inchi 分类 | |
---|---|---|
IVGJQMIFWABEDB-UHFFFAOYSA-N | InChI=1S/C15H14S2/c1-2-4-12(5-3-1)13-6-8-14(9-7-13)15-16-10-11-17-15/h1-9,15H,10-11H2 | as.raw(c(0x58, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00 |
BPLWLYWRZQYGSG-UHFFFAOYSA-N | InChI=1S/C13H10F2/c14-13(15)12-8-6-11(7-9-12)10-4-2-1-3-5-10/h1-9,13H | as.raw(c(0x58, 0x0a |
问题中的测试数据和代码不会产生声明的错误。大概完整的数据集有重复,否则你试图附加dataset_class两次 - 如果下面的最后一条语句重复,我们会得到报告的错误。
library(RSQlite)
# test input in reproducible form
dataset_class <-
structure(list(Inchikey = c("IVGJQMIFWABEDB-UHFFFAOYSA-N", "BPLWLYWRZQYGSG-UHFFFAOYSA-N"
), inchi = c("InChI=1S/C15H14S2/c1-2-4-12(5-3-1)13-6-8-14(9-7-13)15-16-10-11-17-15/h1-9,15H,10-11H2",
"InChI=1S/C13H10F2/c14-13(15)12-8-6-11(7-9-12)10-4-2-1-3-5-10/h1-9,13H"
), Classification = c("58 0a 00 00 00 03 00 04 00 03 00 03 05 00 00 00 00 05 55 54 46 2d 38 00 00 00 fe",
"58 0a 00 00 00 03 00 04 00 03 00 03 05 00 00 00 00 05 55 54 46 2d 38 00 00 00 fe 55 54 46 2d"
)), class = "data.frame", row.names = c(NA, -2L))
conn <- dbConnect(SQLite())
dbExecute(conn,"CREATE TABLE IF NOT EXISTS 'dummy' (
ID INTEGER PRIMARY KEY,
InChikey TEXT UNIQUE,
InChi TEXT NOT NULL,
Classification BLOB)")
## [1] 0
dbAppendTable(conn, "dummy", dataset_class)
## [1] 2