我有一个5gig的csv文件(也作为一个sas数据文件,如果它会更容易)我需要放入一个sql数据库,所以我可以在R中使用它
变量名称全部包含在第一个观察行中,并且是双引号.有1000多个变量,其中一些是数字的其他字符(尽管一些字符变量是数字字符串,但我不太担心它我可以在R中修复它).
我的问题是如何将csv文件导入到我的数据库中的新表中,而且痛苦最小?
我发现事情首先要创建你的表(包括指定所有变量,我有1000+),然后使用".import文件表"来引入数据.或者,使用一些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)
Run Code Online (Sandbox Code Playgroud)
该field.types
是没有必要的.如果您不提供此列表,RSQLite将从标题中猜测.索引也不是必需的,但稍后会加快查询速度(如果为查询索引正确的列).
我一直在这里学习很多这样的东西,所以如果你在SQLite上查询我的问题/答案,你可能会发现一些有趣的东西.