【问题标题】:Set or create primary key in SQLite from R从 R 在 SQLite 中设置或创建主键
【发布时间】:2011-06-20 08:36:26
【问题描述】:

我尝试在 R 中在两个 data.frame 之间进行 merge(),但内存不足,所以我想将 data.frame 导出到 SQLite 数据库(使用 RSQLite 库)。

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

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

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

【问题讨论】:

    标签: sqlite r


    【解决方案1】:

    此类问题在 R-sig-DB 上进行了讨论。具体见:

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

    【讨论】:

      【解决方案2】:

      一般来说,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.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-21
        • 1970-01-01
        • 2013-09-09
        • 2015-01-25
        • 2016-12-05
        • 1970-01-01
        相关资源
        最近更新 更多