MySQL如何匯出帶日期格式的檔案
一網友問在MySQL中如何只用SQL語句匯出帶日期格式的檔案。覺得有點意思,於是嘗試了一下。匯出檔案使用SELECT INTO OUTFILE 但是OUTFILE後面的值不能使用變數,所以只能使用動態SQL語句來實現。其中表user為測試表。
具體語句如下所示
mysql> SET @SqlScript= CONCAT("SELECT * INTO OUTFILE '/tmp/sql_out_", DATE_FORMAT(NOW(), '%Y%m%d%H%i%s'), ".txt' FROM `user`;");
Query OK, 0 rows affected (0.01 sec)
mysql> PREPARE Sql_Text FROM @SqlScript;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> EXECUTE Sql_Text;
Query OK, 33 rows affected (0.00 sec)
mysql>
關於SELECT INTO OUTFILE時有幾個需要注意的,必須確保當前帳號具有對應目錄的寫入權限。否則就會出現許可權問題" Can't create/write to file 'xxxxx' (Errcode: 13 - Permission denied)"
另外關於MySQL prepare語句的SQL文法和知識點:
PREPARE statement_name FROM preparable_sql_statement; /*定義*/
EXECUTE statement_name [USING @var_name [, @var_name] ...]; /*執行預先處理語句*/
{DEALLOCATE | DROP} PREPARE statement_name /*刪除定義*/ ;
PREPARE語句用於預備一個語句,並指定名稱statement_name,以後引用該語句。語句名稱對大小寫不敏感。preparable_sql_statement可以是一個文字字串,也可以是一個包含了語句文本的使用者變數。該文本必須表現為一個單一的SQL語句,而不是多個語句。在這語句裡,‘?’字元可以被用於標識參數,當執行時,以指示資料值綁定到查詢後。‘?’字元不應加引號,即使你想要把它們與字串值結合在一起。參數標記只能用於資料值應該出現的地方,而不是SQL關鍵字,標識符,等等
如果可以藉助shell指令碼之類的工具,當然還有很多方法可以匯出帶日期格式的資料檔案。在此不做過多展開。
本文永久更新連結地址: