在R中设置或创建SQLite中的主键

时间:2011-06-19 03:59:07

标签: sqlite r

我尝试在两个data.frames之间的R中进行merge()但是RAM用完了,所以我想将data.frame导出到SQLite数据库(使用RSQLite库)。 / p>

使用dbWriteTable()将data.frame写入数据库非常简单。但是,我不认为我可以在没有主键的情况下在SQLite3中执行'JOIN'操作......

我的问题是:当我在R中创建SQLite表时,有没有办法为data.frame设置/创建主键?如果我不能这样做,有没有人有一个巧妙的解决方案,他们一直在使用?

我意识到这是一个R问题,而不是一个统计问题......

2 个答案:

答案 0 :(得分:2)

在R-sig-DB上讨论了这类问题。特别是,见:

https://stat.ethz.ch/pipermail/r-sig-db/2010q1/000813.html

答案 1 :(得分:0)

通常,SQL数据库加入公共值。因此,您可以在不创建主键的情况下执行JOIN操作。

SQLite在数据和数据类型方面比大多数人更宽容。 (它实际上并不支持SQL意义上的类型化数据。)它允许这样的东西。

CREATE TABLE v1 (n integer);
INSERT INTO "v1" VALUES(1);
INSERT INTO "v1" VALUES(2);
INSERT INTO "v1" VALUES(3);
INSERT INTO "v1" VALUES(4);
INSERT INTO "v1" VALUES('Oh, bugger.');

CREATE TABLE v2 (n integer);
INSERT INTO "v2" VALUES(1);
INSERT INTO "v2" VALUES(3);
INSERT INTO "v2" VALUES(5);
INSERT INTO "v2" VALUES('Oh, bugger.');

select v1.n from v1 
inner join v2 on (v2.n = v1.n);
1
3
Oh, bugger.