我有一个5gig的csv文件(如果更容易的话,也可以作为sas数据文件),我需要将其放入sql数据库中,以便可以在R中使用它。

变量名称全部包含在第一观察行中,并用双引号引起来。有1000多个变量,其中一些数字为其他字符(尽管某些字符变量是数字字符串,但是我不太担心可以在R中修复它)。

我的问题是如何以最小的代价将csv文件导入数据库中的新表?

我发现有很多事情要说要首先创建您的表(包括指定所有变量,我拥有1000多个变量),然后使用“.import file table”引入数据。
或者,要使用某些gui导入向导,这对我来说不是一个选择。

抱歉,如果这是sql 101,但感谢您的帮助。

最佳答案

这是我的工作流程:

library("RSQLite")
setwd("~/your/dir")
db <- dbConnect(SQLite(), dbname="your_db.sqlite") ## will make, if not present
field.types <- list(
        date="INTEGER",
        symbol="TEXT",
        permno="INTEGER",
        shrcd="INTEGER",
        prc="REAL",
        ret="REAL")
dbWriteTable(conn=db, name="your_table", value="your_file.csv", row.names=FALSE, header=TRUE, field.types=field.types)
dbGetQuery(db, "CREATE INDEX IF NOT EXISTS idx_your_table_date_sym ON crsp (date, symbol)")
dbDisconnect(db)

不需要field.types。如果您不提供此列表,RSQLite将从标题中进行猜测。索引也不是必需的,但是稍后将加快查询速度(如果您为查询的正确列编制索引)。

我在SO上已经学习了很多此类内容,因此,如果您在SQLite上查询/回答了我的问题,则可能会发现一些潜在的内容。

关于sqlite - UNIX将大csv导入SQLite,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4350131/

10-10 18:29
查看更多