作者criky (立業成家)
看板R_Language
標題[問題] sql 指令階層資料整理
時間Wed Dec 28 16:18:24 2016
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
新手(沒寫過程式,R 是我的第一次)
[問題敘述]:
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
新手(沒寫過程式,R 是我的第一次)
[問題敘述]:
data如下:
(to) (from)
sql_command from_t insert_t table_t 想整理成 lv obj dep
select ... form t1 t1 0 t1
-----------------------------------------------
insert into t2 t2 1 t2 t1
select ...
from t1 t1 0 t1
-----------------------------------------------
insert into t5 t5 2 t5 t4
select * 1 t4 t3
from t4 t4 0 t3
join
(select ... from t3) t3
-----------------------------------------------
insert into t9 t9 1 t9 t8_1
select * from 1 t9 t8_2
(select ... from t8_1) t8_1 0 t8_1
join 0 t8_2
(select ... from t8_2) t8_2
------------------------------------------------
delete from t11 t11 0 t11
------------------------------------------------
delete from t13 t13 1 t13 t12
where in
(select ... from t12) t12 0 t12
------------------------------------------------
create table new1 as new1 1 new1 new
(select ... from new) new 0 new
------------------------------------------------
create table new2 new2 0 new2
想整理成以下資料
obj dep lv
t1 0
t1 t2 1
t5 t4 2
t4 t3 1
t3 0
t9 t8_1 1
t9 t8_2 1
t8_1 0
t8_2 0
t11 0
t13 t12 1
t12 0
new1 new 1
new 0
new2 0
上面範例資料實際是沒有 --------
是為了閱讀方便所以將資料分組並加上 -------
有(select..)的話lv會+1
join上下的(select..) table lv 是相同的
先把問題po上來,
回家也會再想想怎麼做~
若有大大願意協助非常感謝!
回報一下,
目前還是用EXCEL先做,
整個流程大致如下:
1、將sql語法貼到excel A1,用許多欄位取出
select,insert into,delete...關鍵字是否存在
2、檔案中語法段落間有空行,可編碼成不同group
3、抓出table名稱,以table數量+考慮join是否存在判斷level
大致上是這樣做,但事實上仍有許多狀況,
例如join的上下table是同一個,但篩選的資料不同,
總之目前還是手工在做整理 QQ
這種半結構式的data整理起來還真痛苦 QQ
[關鍵字]:
level sql
選擇性,也許未來有用
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.79.246
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1482913108.A.F96.html
→ cywhale: 看不懂data如下那些列 sql?是指sql command還是資料一欄? 12/28 20:54
→ cywhale: from_t?這些是資料還是query操作過程?怎對應obj,dep,lv? 12/28 20:57
→ criky: 這些都是sql指令,目前是先用excel取出sql command與table 12/28 21:13
※ 編輯: criky (27.147.47.152), 12/28/2016 21:29:31
推 cywhale: 這樣看懂了XD感覺只能用for..if else去掃 因lv和命令逆反 12/28 23:36
→ cywhale: 就是偵測(insert or delete)...(select or create)當作 12/28 23:38
→ cywhale: 一段,在這一段中用if else去處理lv,obj,dep..就是硬做.. 12/28 23:40
→ criky: 我的資料有判斷insert,delete,create 有/無 的欄位 12/29 07:48
→ criky: 還有一個問題就是編流水號,自己看知道那些列是同一段語法 12/29 07:48
→ criky: 一堆指令不知道怎麼分@@ 12/29 07:49
※ 編輯: criky (27.147.47.152), 12/29/2016 22:20:09
→ cywhale: 你的問題比較像parse sql cmd..在第二虛線框內 from t1; 12/29 23:59
→ cywhale: insert into t2為何同一組? 倒數第二虛線框sel..from new 12/30 00:00
→ cywhale: 為何和create tbl new1同一組?一個new, 一個new1 12/30 00:01
→ criky: 有些舉例不太完整,事實上sql cmd有些也不太完整 12/30 07:29
→ criky: insert into 漏了lv0, 我再補上 12/30 07:30
→ criky: 通常create table1 是從 select from table2來的 12/30 07:31
※ 編輯: criky (27.147.47.152), 12/30/2016 07:36:56
推 cywhale: 我另外發文回答你目前案例的處理 12/30 07:32