[問題] sql 指令階層資料整理

看板R_Language作者 (立業成家)時間8年前 (2016/12/28 16:18), 8年前編輯推噓2(2014)
留言16則, 2人參與, 最新討論串1/2 (看更多)
[問題類型]: 程式諮詢(我想用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

12/28 20:54, , 1F
看不懂data如下那些列 sql?是指sql command還是資料一欄?
12/28 20:54, 1F

12/28 20:57, , 2F
from_t?這些是資料還是query操作過程?怎對應obj,dep,lv?
12/28 20:57, 2F

12/28 21:13, , 3F
這些都是sql指令,目前是先用excel取出sql command與table
12/28 21:13, 3F
※ 編輯: criky (27.147.47.152), 12/28/2016 21:29:31

12/28 23:36, , 4F
這樣看懂了XD感覺只能用for..if else去掃 因lv和命令逆反
12/28 23:36, 4F

12/28 23:38, , 5F
就是偵測(insert or delete)...(select or create)當作
12/28 23:38, 5F

12/28 23:40, , 6F
一段,在這一段中用if else去處理lv,obj,dep..就是硬做..
12/28 23:40, 6F

12/29 07:48, , 7F
我的資料有判斷insert,delete,create 有/無 的欄位
12/29 07:48, 7F

12/29 07:48, , 8F
還有一個問題就是編流水號,自己看知道那些列是同一段語法
12/29 07:48, 8F

12/29 07:49, , 9F
一堆指令不知道怎麼分@@
12/29 07:49, 9F
※ 編輯: criky (27.147.47.152), 12/29/2016 22:20:09

12/29 23:59, , 10F
你的問題比較像parse sql cmd..在第二虛線框內 from t1;
12/29 23:59, 10F

12/30 00:00, , 11F
insert into t2為何同一組? 倒數第二虛線框sel..from new
12/30 00:00, 11F

12/30 00:01, , 12F
為何和create tbl new1同一組?一個new, 一個new1
12/30 00:01, 12F

12/30 07:29, , 13F
有些舉例不太完整,事實上sql cmd有些也不太完整
12/30 07:29, 13F

12/30 07:30, , 14F
insert into 漏了lv0, 我再補上
12/30 07:30, 14F

12/30 07:31, , 15F
通常create table1 是從 select from table2來的
12/30 07:31, 15F
※ 編輯: criky (27.147.47.152), 12/30/2016 07:36:56

12/30 07:32, , 16F
我另外發文回答你目前案例的處理
12/30 07:32, 16F
文章代碼(AID): #1OOtLK-M (R_Language)
文章代碼(AID): #1OOtLK-M (R_Language)