問題タブ [rsqlite]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3243 参照

r - rsqlite_send_query(conn@ptr, statement) のエラー: 列名が重複しています: Ret

正常に機能した SQL クエリが多数ありますが、何らかの理由で機能しなくなりました。データは変更されていません。コードは変更されていません。

次のエラー メッセージが表示され続けます。

rsqlite_send_query(conn@ptr, statement) のエラー: 列名が重複しています: Ret

これらのエラーは、左結合で発生する傾向があります。以下に例を示します。

問題のテーブルには、「Ret」という名前の変数が含まれていません

最近、すべてのパッケージを更新しました。

これはレガシー コードです。可能な場合は dplyr::left_join を使用する傾向があります。しかし、 left_join は、SQL の左結合が達成できること (制約としての不等式など) を決して行いません。

これらは私がロードするパッケージです:

パッケージ <- c("ISLR","gam","biglm","dplyr","gtools","tidyr", "randomForest","splines", "tree", "pROC","lfe"," lubridate"、"stargazer"、"scales"、"ggplot2"、"scales"、"data.table"、"zoo"、"PerformanceAnalytics"、"stats"、"proto"、"timeSeries"、"timeDate"、" gsubfn"、"fBasics"、"DBI"、"RSQLite"、"sqldf"、"RODBC"、"tcltk"、"reshape"、"xts"、"data.table"、"parallel"、"lfe"、" readr"、"purrr"、"tibble"、"hms"、"stringr"、"lubridate"、"forcats")

これは私のセッション情報です ():

sessionInfo() R バージョン 3.3.3 (2017-03-06) プラットフォーム: x86_64-redhat-linux-gnu (64 ビット) 実行環境: Red Hat Enterprise Linux Server 7.3 (Maipo)

ロケール: 1 LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
LC_TIME=en_US.UTF-8 [4] LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US .UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

付属の基本パッケージ: 1 つの並列 tcltk スプライン stats
グラフィックス grDevices utils データセット メソッド base

その他の添付パッケージ: 1 forcats_0.2.0
stringr_1.2.0 hms_0.3 [4] tibble_1.2 purrr_0.2.2
readr_1.0.0 [7] reshape_0.8.6
RODBC_1.3-14 sqldf_0.4-10 [10] RSQLite_1.1-2 fBasics_3011.87
gsubfn_0.6-6 [13] timeSeries_3022.101.2
timeDate_3012.100 proto_1.0.0 [16] PerformanceAnalytics_1.4.3541 xts_0.9-7 Zoo_1.7-14 [19] data.table_1.10.4 ggplot2_2.2.1
scales_0.4.1 [22]
stargazer_5.2 lubridate_1.6.0 lfe_2.5-1998 [25] Matrix_1.2-8 pROC_1.9.1
tree_1.0-37 [28] randomForest_4.6-12
tidyr_0.6.1 gtools_3.5.0 [31] dplyr_0.5.0 biglm_0.9-1 DBI_0.5-1 [34] gam_1.14 foreach_1.4.3
ISLR_1.0

名前空間を介してロードされた (アタッチされて いない
) :
.3 Rcpp_0.12.9 xtable_1.8-2 [13] digest_0.6.12 stringi_1.1.2 grid_3.3.3 tools_3.3.3 Sandwich_2.3-4
magrittr_1.5 [19] lazyeval_0.2.0 Formula_1.2-1 assertthat_0.1 iterators_1.0.8 R6_2.2.0

これがこの質問に関連しているかどうかわからないRSQLite_1.1-2 (2.0より前) を使用していることを覚えておいてください

正直なところ、何が起こっているのかわからず、オンラインで何も見つかりませんでした...

更新 I: sqldf_0.4-11 および RSQLite_2.0 にアップグレードしました....それでもこの問題が発生します。また、sqldf (および依存関係) をロードしようとしました...コードはまだ機能しません

更新 II:まず、 G. Grothendieck氏のこの問題への支援と、長年にわたる R への貢献に感謝したいと思います。

この特定の問題について、mtcars を使用してテスト クエリを実行しようとしました。これはコードです:

b<- sqldf("select a.*, b.mpg as test from mtcars as a left join mtcars as b on a.mpg=b.mpg")

このクエリは機能しました!!! . 次に、sqldf 0.4.11 および RSQLite 2.0 に更新した後でも機能しなかったコードを実行します (更新 I を参照)。驚いたことに、動作するようになりました!!!...何が起こったのかわかりませんが、すべての sqldf クエリが動作するようになりました。参考までに...私はAWSで働いています............説明できない奇妙なことが時々起こります....

更新 III問題が戻ってきました。そこで、アップデート II でテスト コードを再度実行します。これは機能します。そして、そのテスト コードを実行した後、すべての sqldf 結合が再び機能します。

0 投票する
3 に答える
646 参照

r - 引用符で囲まれた値を持つ RSQLite を使用したデータのロード

RSQLite パッケージを使用して、大規模な csv ファイルを SQL lite データベースにロードしようとしています (sqldf パッケージも試しました)。このファイルには、英国のすべての郵便番号と、それらのさまざまな検索値が含まれています。

Rにロードするのを避けて、データベースに直接ロードしたかったのです。これはこのタスクに厳密に必要というわけではありませんが、将来それらを処理する必要がある場合に備えて、メモリに収まらない大きなファイルに対応できるようにするために、そうしたいと考えています。

残念ながら、csv には二重引用符で囲まれた値が提供されており、dbWriteTable 関数はそれらを削除したり、どのような形式でも無視したりできないようです。ファイルのダウンロード場所は次のとおりです: http://ons.maps.arcgis.com/home/item.html?id=3548d835cff740de83b527429fe23ee0

これが私のコードです:

この問題にぶつかったので、sqldf パッケージの使用を推奨するリファレンス チュートリアル ( https://www.r-bloggers.com/r-and-sqlite-part-1/ ) を見つけましたが、残念ながら関連する関数を使用しようとするとsqldf (read.csv.sql) では、二重引用符で同じ問題が発生します。

これは、csv ファイルを SQL システムにインポートする際によくある問題のように感じます。ほとんどのインポート ツールは二重引用符を処理できるため、これで問題が発生することに驚いています (問題に関する明らかなヘルプ ファイルを見逃していない限り)。途中のどこか)。

編集1

これは、SQL テーブルの dput 出力形式の csv ファイルからのデータの例です。

編集2

これは、sqldf の read.csv.sql 関数でフィルター引数を使用した試みです (Windows ユーザーは、このためにrtoolsをインストールする必要があることに注意してください)。残念ながら、不思議なことにすべてのスペースが削除されますが、これでもまだデータから引用符が削除されていないようです。

また、これがスタック オーバーフローの範囲内のプログラミングの質問ではないと感じた人からの投票に感謝します(?!)。

0 投票する
2 に答える
131 参照

r - 外付けハード ドライブの Monetdblite/RSQLite データベースに接続したときの Dplyr の速度は?

初心者の質問です。

R を使用してdplyr大量のデータを分析していますが、サーバー ベースのデータベースにアクセスできません。さらに、コンピューターの内蔵ハード ドライブは、作成する必要があるデータベースに対して小さすぎます。これまでデータを保存するためにmonetdbliteとを使用してきました。RSQLite

Q :データベースを外付けハード ドライブに保存し、それを USB 経由でコンピュータに接続した場合、 monetdblite/の速度はどのくらい低下しますか? RSQLiteこれがどの程度実現可能かを決定する要因は何ですか?

dplyrまたは、私の状況では、より良い代替アプローチ(まだデータベース接続に依存している)がありますか?