mysql對分隔符的處理(一)
2011-09-07 22:24
系統命令無需在語句結尾處新增分號直接回車即可,通常情況下長格式的系統命令在行尾新增分號不會影響命令的正常執行,如:use test;。習慣了每敲一條命令都打乙個分號的管理員和程式設計師們現在注意了,分號不要隨便敲,mysql在這裡給我們挖了乙個坑。
讓我們來看乙個案例:
使用mysqldump命令匯出乙個名為"pp#idhuishou"的表,mysqldump -uroot -p test pp#idhuishou -r pp#idhuishou.sql,檔名與表名相同都含有乙個井號。 使用source命令再匯入資料的時候,我又習慣性的在結尾多打了乙個分號,結果敲完分號再敲回車語句不執行,如果不敲分號,語句正常執行,資料被成功灌入,顯然是客戶端把井號後的內容當成注釋來處理了。
mysql> source pp#idhuishou.sql;->
讓我們分析一下mysql倒底搞了什麼鬼,mysql處理一條語句首先要判斷這條語句是否為系統命令,如果是系統命令會有單獨的函式單獨處理,如:com_warnings,com_use,com_source,com_help等。
code:
static int read_and_execute(bool in interactive) {
for(;;) if (add_line(glob_buffer,line,&in_string,&ml_comment))
//如果語句不是系統命令就會走到這裡 break; } /* if in batch mode, send last query even if it doesn't end with \g or go */ if (!interactive && !status.exit_status) } ... ...
}(未完待續)
【本文首發於:
】
【 】
Hive的列分隔符和行分隔符
在建立hive表時,預設行分隔符 a 列分隔符 n 這兩項也是可以設定的。在實際開發中,一般預設使用預設的分隔符,當然有些場景下也會自定義分隔符。spark hive use test db 建立外部表 create external table test tb user id bigint com...
AWK處理文字之「分隔符「
awk預設處理的分隔符為空格,而我們經常用到的如 etc passwd,etc shadow等檔案不是以空格作為分割的而是以 作為分割,此時若想提取某個欄位的值,必須要改變預設的分隔符,這裡我給大家推薦三種改變分割符的方法。一 awk f etc passwd f後面跟你想要以什麼作為輸入分隔符,本...
hive的列分隔符和行分隔符的使用
目錄 一 hive中預設的分割符如下 二 分隔符的指定與使用 三 建好表之後更改字段分隔符 分隔符描述 n 行分隔符 a欄位分隔符 001 barray struct的元素間的分隔符,map的鍵值對與鍵值對間分隔符 002 cmap中鍵與值之間的 分隔符 003 hive中在建立表時,一般會根據匯入...