2017-06-22 19 views
0

ここでは実際の例を提供するのが非常に難しいので、問題を説明しようとします。R RODBC sqlSave - 列名で一致する

私はデータベースtableDbにテーブルA,B,Cを持っています。

私は、A,CBの列を持つR dfのデータフレームを持っています。

今、私はtableDbdfからのデータを保存するために

sqlSave(channelToDb, dat = df, tablename = "tableDb", append = TRUE, 
rownames = FALSE, fast = FALSE) 

を使用しています。

問題は、カラムからのデータがdfBtableDbのカラムCに格納され、dfCカラムBに格納されています。

したがってsqlSaveは、2つのテーブルが列名ではなくインデックスのみで一致しますか?

列名を照合する方法はありますか?

答えて

0

最も簡単にこれを行うことでしたが、保存する前に、データフレームを並べ替えることです。

df<-df[c("A", "C", "B")]

これは、テーブルと同じ順序でデータフレームをつけたりしますできた私たちの一時的なデータフレーム

その後

df_to_table<-df[c("A", "C", "B")]

sqlSave(channelToDb, dat = df_to_table, tablename = "tableDb", append = TRUE, 
rownames = FALSE, fast = FALSE) 

あなたがきれいで、小さなあなたenivronmentを維持したい場合は、直後の一時テーブルを削除...

rm(df_to_Table)

、あなたは、元の環境内のdfとバックあなたの元のワークスペースにありますあなたの変数はあなたのテーブルに正しい順序で保存されます。

+0

もちろん、それはオプションになり、私は現在そのようにしています。しかし、私の現実世界のテーブルにはいくつかの列があり、これにはより良い方法があると思いました。 – schluk5

+0

データベースからフィールド名を読み込み、一時フレーム内のリストとしてドロップしてから保存する関数を自分で書くことができます。あなたはそれにデータベース名、データフレーム、ファイル名を付ける必要があり、それはあなたのためにすべてを行うことができます。 – sconfluentus

関連する問題