萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> select into outfile導出數據sql語句

select into outfile導出數據sql語句

select into outfile命令是mysql中一種用來導出數據的一個常用的命令,下面我來介紹select into outfile的用法,有需要的朋友可參考。

mysql管理數據當然可以很方便的導出數據,但是當數據量很大是,phpmyadmin很可能會發生執行超時,其實很容易用select into outfile解決!

SELECT...INTO OUTFILE語句的主要作用是讓您可以非常快速地把一個表轉儲到服務器機器上。如果您想要在服務器主機之外的部分客戶主機上創建結果文件,您不能使用SELECT...INTO OUTFILE。在這種情況下,您應該在客戶主機上使用比如“mysql –e "SELECT ..." > file_name”的命令,來生成文件。

SELECT...INTO OUTFILE是LOAD DATA INFILE的補語;用於語句的exort_options部分的語法包括部分FIELDS和LINES子句,這些子句與LOAD DATA INFILE語句同時使用


如下:(將數據庫wordpress中的wp_posts表導出到D盤)

 代碼如下 復制代碼

select * into outfile 'd:data.txt' from wp_posts

需要注意的是:使用select into outfile語句,必須要有執行權限,路徑必須存在,否則使用當前數據庫目錄,

例2

 代碼如下 復制代碼

表結構及測試數據
CREATE TABLE `tab`(

  `id` INT(1) NOT NULL AUTO_INCREMENT PRIMARY KEY,

  `name` VARCHAR(10) NOT NULL,

  `add` VARCHAR(20) CHARACTER SET gbk NOT NULL

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

INSERT INTO `tab`(`name`,`add`) VALUES

('中文', '這列不會亂碼'),

('漢字', '這列不會亂碼');

 

SELECT * FROM `tab`;

 

+----+------+--------------+

| id | name | add          |

+----+------+--------------+

|  1 | 中文 | 這列不會亂碼 |

|  2 | 漢字 | 這列不會亂碼 |

+----+------+--------------+
 rows in set (0.00 sec)

代碼

 代碼如下 復制代碼

在 INTO OUTFILE 中使用變量
SET @tmp_sql = CONCAT(
  "SELECT * INTO OUTFILE 'C:\\sql_", DATE_FORMAT(NOW(), '%Y%m%d%H%i%s'),
  ".txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY "'" LINES TERMINATED BY 'rn' FROM `tab`;");
PREPARE s1 FROM @tmp_sql;
EXECUTE s1;
DROP PREPARE s1;

上面的代碼會在C盤下生成“sql_當前時間.txt”的文件,避免INTO OUTFILE文件已存在錯誤

注:直接在命令行中SELECT顯示無亂碼,但使用 INTO OUTFILE 導出後有亂碼,此時必須修改顯示亂碼的列的字符集

copyright © 萬盛學電腦網 all rights reserved