技術討論區 > database 討論版
請問 csv 資料更新 db 問題
dark:
小弟用 sqlite3 想統計資料 , 但與何種 db 應該無關 ...
若有個 csv
貨物(直的)\帳號(橫的),甲,乙,丙
A,1,-1,2
B,,1,2
10 十分鐘後新 csv
貨物(直的)\帳號(橫的),乙,丙,丁
B,2,1,-2
C,3,2,2
D,2,,3
想更新到 table 中 , 直接邏輯應該是 ..
抓第一行 => 迴圈判斷帳號存在 || 建立欄位
抓第一欄 => 迴圈判斷物品存在 || 新增一列
帳號迴圈 {
物品迴圈{
取值 , 加減 , 更新
}}
-------------------------
如上述簡單例子 ,
第一次迴圈共跑 3x2=6 次 , 第二次 =9
數量大時就乘上去了
一般遇到此類問題 , 程式邏輯是怎麼做的呢 ?
以 3x3 為例 , 小弟在想 , 若是製造兩個 tmp 表格
tmp1
tmp1,tmp1,tmp1,tmp1,
tmp1,乙,丙,丁
tmp1,乙,丙,丁
tmp1,乙,丙,丁
tmp2
tmp2=,tmp2=,tmp2=,tmp2=,
tmp2=,B=,B=,B=,
tmp2=,C=,C=,C=,
tmp2=,D=,D=,D=,
三 table 合併 , eval 取值
物品迴圈{
抓包含物品名稱的變數
}
一般遇到此類欄位非故定的問題
若考慮資料量可能很大時 , 是用什麼方法呢 ?
或已有先賢開發函式可用 ?
謝謝!
netman:
抱歉,我對 DB 沒有很有研究...
每次讀出來暫存,插入新的值,刪除原有列,再寫回如何?
dark:
小弟此問題 , csv 並非隨時異動 , 沒有怕漏掉某行資料
而在於 csv 欄位並非故定位置 , 欄位數也不一定
若 csv 第二欄永遠是王小二 , 那 table 中代號 w02=第二欄值 , 就不用在判斷一次
如此 , 數量大時 , 判斷就多花時
(ps .. 其實不多 , 只幾百行 x 十幾欄 , 欄位有可能增加 , 欄位行數每次不一定數量出現)
小弟上述製造 tmp 表格方式 , 只說合併 , 沒貼合併結果 ...
若三 table 合併 , 可得
tmp1tmp2=貨物(直的)\帳號(橫的),tmp1tmp2=乙,tmp1tmp2=丙,tmp1tmp2=丁,
tmp1tmp2B=,乙B=2,丙B=1,丁B=-2
tmp1tmp2C=,乙C=3,丙C=2,丁C=2
tmp1tmp2D=,乙D=2,丙D=,丁D=3
若不考慮運算 , 以及置換乙丙丁成代號 , 直接更新欄位值 ... 那麼只需去掉 tmp 字眼
set 乙B=2,丙B=1,丁B=-2 where obj="B"
就簡便許多
小弟對 db 也不熟悉 , 只貪圖他的欄位增減方便而用 , 並沒有深入學習
而這問題應該不算稀少 , 不知有沒有可處理的函式可用 , 因此詢問
畢竟 , 千錘百鍊才能進函式庫 ... 有當然最好
... 最近北韓新聞多 , 前幾天看到舊聞才知道
原來櫻木花道(Dennis Rodma)也進 NBA 名人堂了
hoyo:
sqlite3 目前只用在 APP 內
因為使用在 APP 所以資料的增減以及使用頻率就不會太頻繁 幫不上忙 sorry
而且 sqlite3 也只用過一次 也算是還沒出新手村的超新手了
asako:
這不是讀一次,然後hash join,有值更新 無值 push
導覽
[0] 文章列表
[#] 下頁
前往完整版本