2010-12-02 19 views

答えて

19

sqldfパッケージにread.csv.sqlを使用できます。読み取りを行うのは1行のコードだけです。これを試して、それにファイルを読んで、その後、新しいデータベースを作成したいと仮定testingdb、および:

# create a test file 
write.table(iris, "iris.csv", sep = ",", quote = FALSE, row.names = FALSE) 

# create an empty database. 
# can skip this step if database already exists. 
sqldf("attach testingdb as new") 
# or: cat(file = "testingdb") 

# read into table called iris in the testingdb sqlite database 
library(sqldf) 
read.csv.sql("iris.csv", sql = "create table main.iris as select * from file", 
    dbname = "testingdb") 

# look at first three lines 
sqldf("select * from main.iris limit 3", dbname = "testingdb") 

以上がRSQLiteを使用していますsqldfを使用しています。 RSQLiteを直接使用することもできます。 RSQLiteの?dbWriteTableを参照してください。 dbWriteTableと直接処理すると、sqldfが自動的に(通常は)処理されるため、行末に問題がある可能性があることに注意してください。

あなたの意図はすぐにデータベースにそれを読んだ後Rにファイルを読み込むことだったとあなたが本当にその後、データベースを必要としない場合は、以下を参照してください

http://code.google.com/p/sqldf/#Example_13._read.csv.sql_and_read.csv2.sql

+0

sqldfは素晴らしいです!この回答もチェックしてください。http://stackoverflow.com/questions/4350131/unix-importing-large-csv-into-sqlite – Jay

+0

しかし、セッションの最後にファイルを削除します。それを保つ方法はありますか? – xiaodai

+1

@xiaodai、sqldfは、上記のコードでデータベースまたは入力ファイルを削除しません。 sqldfは作成するすべてのデータベースを削除しますが、sqldfは入力ファイルを削除せず、作成しないデータベースを削除しません。この場合、データベースはsqldf自身で作成されません(フロントエンドsqldfではなく、 'attach'文でバックエンドSQLiteによって作成されます)、sqldfはそれを削除しません。 sqldfはデータフレームの特別な操作を目的としていますが、永続的なデータベースを扱う場合は、RSQLiteやRH2などのデータベースインターフェイスパッケージを直接使用することをお勧めします。 –

2

私はsqldfパッケージであることを行う傾向にある。Quickly reading very large tables as dataframes in R

は、上記の例では、私は一時のsqliteのDBにCSVを読むことを覚えておいてください。あなたは明らかにそのビットを変更する必要があります。

関連する問題