2016-03-31 6 views
0

私は初めてMySqlを使って作業しています。 PHPMYADMINを使っていくつかのテーブルを使ってmysqlにデータベースを作成しました。テーブルの1つは「City」と題されています。この表は2つの列のフィールド1. City_IDと2. City。このCity_IDには、自動インクリメントのプライマリキーがあります。dbwriteetableは、mysqlの自動インクリメントフィールドを削除します

私はRに読み込んだCSV形式のデータを持っています。データフレームから、私はR-DFからCity値を取得するために次のコマンドを使用しています。

City <- as.data.frame(unique(df[,10])) 
names(City) <- "City" 

次のコードを使用してMySqlに接続しています。

library(RMySQL) 
mydb <- dbConnect(MySQL(), user = "root", password = "****", dbname = "pal", host = "localhost") 

dbWriteTable(mydb, "City", City, overwrite = TRUE, row.names = FALSE) 

フィールドCity_IDが削除され、テーブルのCity列が値で埋められます。これを解決する方法を知らない。私が行っている仕事の大部分は、ExcelまたはCSV形式のデータがあります。そして私は頻繁にテーブルを更新する必要があります。これに関する考え。

+0

あなたは 'overwrite = TRUE'を指定しました。 –

+0

[dbWriteTable(...、append = T)の重複はRで上書きされます](http://stackoverflow.com/questions/11719850/dbwritetable-append-t-is-overwritng-in-r) –

+0

@PanagiotisKanavos私はappend = Tと一緒に 'overwrite = FALSE'を試してみましたが、私のSQLテーブルの値としてゼロしか得ていません。 – Apricot

答えて

0

このケースでもこれが問題だと思います。 Illariが別のトピックで書いたようにLAST_INSERT_ID() always returns 0 (RMySQL) - separate connection issue

library("RMySQL") 
con <- dbConnect(MySQL()) 
dbSendQuery(con, "DROP TABLE IF EXISTS t;") 
dbSendQuery(con, "CREATE TABLE t (i INT NOT NULL AUTO_INCREMENT PRIMARY KEY);") 
res <- dbSendQuery(con, "INSERT INTO t VALUES (NULL);") 

doesn't work: 
dbGetQuery(con, "SELECT LAST_INSERT_ID();") 
    LAST_INSERT_ID() 
1    0 

# works: 
dbClearResult(rs) 
dbGetQuery(con, "SELECT LAST_INSERT_ID();") 
    LAST_INSERT_ID() 
1    1 
関連する問題