MySQL 導出數據踩過的坑

MySQL中你可以使用SELECT...INTO OUTFILE語句來簡單的導出數據到文本文件上。

SELECT ... INTO OUTFILE 語句有以下屬性:

  • LOAD DATA INFILE是SELECT ... INTO OUTFILE的逆操作,SELECT句法。爲了將一個數據庫的數據寫入一個文件,使用SELECT ... INTO OUTFILE,爲了將文件讀回數據庫,使用LOAD DATA INFILE。
  • SELECT...INTO OUTFILE 'file_name'形式的SELECT可以把被選擇的行寫入一個文件中。該文件被創建到服務器主機上,因此您必須擁有FILE權限,才能使用此語法。
  • 輸出不能是一個已存在的文件。防止文件數據被篡改。
  • 你需要有一個登陸服務器的賬號來檢索文件。否則 SELECT ... INTO OUTFILE 不會起任何作用。
  • 在UNIX中,該文件被創建後是可讀的,權限由MySQL服務器所擁有。這意味着,雖然你就可以讀取該文件,但可能無法將其刪除。

導出表作爲原始數據

mysqldump 是 mysql 用於轉存儲數據庫的實用程序。它主要產生一個 SQL 腳本,其中包含從頭重新創建數據庫所必需的命令 CREATE TABLE INSERT 等。

使用 mysqldump 導出數據需要使用 --tab 選項來指定導出文件指定的目錄,該目標必須是可寫的。

 

 

FAQ:

  • mysqldump 版本問題;
    • mysqldump可以 dump出服務器的mysql數據  也可以dump可鏈接的遠程服務器數據    (-hlocalhost   -hXXXX)
    • select version() 查看db 版本      本機和遠程db 版本需要一致
  • db 開啓遠程 訪問 ;
    • mysql庫下   user表
  • mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
  • mysqldump: Couldn't execute 'show fields from `XXX`': SELECT command denied to user 'root'@'localhost' for table 'XXX' (1142)
  • mysqldump: Got error: 1044: Access denied for user 'root'@'localhost' to database 'XXX' when using LOCK TABLES
    • 思路 權限問題
    • mysql庫 user表  查看對應   Host的 各項權限 
  • flush privileges 
    • MySQL用戶數據和權限有修改後,希望在"不重啓MySQL服務"的情況下直接生效,那麼就需要執行這個命令
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章