2010-12-03 11 views
5

içine BÜYÜK csv İthalat yüzden UNIX (daha kolay olurdu, ayrıca sas veri dosyası gibi) bir 5gig CSV dosyası var SQLite'ta

R.

onunla çalışabilir Değişken isimlerinin tümü ilk gözlem hattında yer alır ve çift tırnak içine alınır. Karakterlerin bazıları 1000'den fazla değişkene sahiptir (bazı karakter değişkenleri sayı dizileri olsa da, bunun için çok endişelenmiyorum).

Sorum şu: csv dosyasını veritabanımda en az ağrıyla nasıl yeni bir tabloya alabilirim?

Önce tablonuzu oluşturmak için (1000'den fazla olan tüm değişkenleri belirtmek de dahil olmak üzere) ve sonra da ".import dosya tablosunu" kullanarak verileri getirmek için bir şeyler buldum. Veya, bazı gui içe aktarma sihirbazını kullanmak benim için bir seçenek değil.

Üzgünüz, bu sql 101'tir ancak yardım için teşekkürler.

+1

Ne kadar RAM ile çalışmak zorundasınız? –

+0

Yeni bir araştırma kümesine geçtik, böylece yöneticilerle ilgili bilgileri kontrol etmeliyim, ancak varsayılan iş gönderme seçenekleri ile 16 GB aldığımı düşünüyorum ve tabii ki daha fazla talepte bulunabilirim. –

+0

sadece her şeyi bellekte bırakma seçeneğini de kontrol ettiğinizden emin olun. Çalışma alanınızı programınızdan zaman zaman kaydedin. 16GB, fazlasıyla yeterli. Çok daha hızlı ve daha kolay olabilir ve sizden operatörünüzden daha fazla RAM isteme seçeneğiniz bile var. (ve sen LINUX kullanıyorsun, değil mi?) – mrsteve

cevap

8

İşte benim iş akışı verilmiştir. Bu listeyi vermezseniz, RSQLite başlıktan tahmin edecektir. Dizin gerekli değildir, ancak daha sonra sorgularınızı hızlandırabilir (sorgularınız için doğru sütunu dizine eklerseniz).

Buradaki birçok şeyi burada öğrendim, bu yüzden SQLite'de sorduğum/yanıtladığım sorularımı kontrol ederseniz, bazı etiketli şeyler bulabilirsiniz.

+0

Bu harika görünüyor. teşekkürler –

+0

+1. virgülle dosyası farklı uzantıya sahip ayrılmış if (bazen ...), 'dbWriteTable' başarısız olur dikkat edin. Sadece .csv'ye yeniden adlandırın. – Ryogi

4

sqldf paketindeki "read.csv.sql" işlevine bakın.

Bu, bir csv dosyasını bir SQLite veritabanına dönüştürür, sonra da R'ye yazar, ara veritabanını sizin amaçlarınız doğrultusunda kullanabilmeniz gerekir.

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 gerekli değildir:

+2

Sen sqldf ana sayfadaki örnek 13d bir sqlite veritabanına bir csv dosyasını okumak için sqldf kullanarak bir örnek bulabilirsiniz: http://code.google.com/p/sqldf/#Example_13._read.csv.sql_and_read. csv2.sql –

İlgili konular