跳轉到內容

MySQL/語言/匯入/匯出

來自華夏公益教科書,開放的書籍,開放的世界

除了 mysqldump(參見 MySQL/管理),您還可以匯出/匯入原始資料。

匯出資料

[編輯 | 編輯原始碼]

可以使用 "INTO OUTFILE" 關鍵字匯出資料

 SELECT * FROM destinataire INTO OUTFILE '/tmp/test' WHERE id IN (41, 141, 260, 317, 735, 888, 1207, 2211);

請注意,MySQL 守護程序本身會寫入檔案,而不是您執行 MySQL 客戶端的使用者。該檔案將儲存在伺服器上,而不是您的主機上。此外,伺服器需要對您指定的路徑具有寫入許可權(通常,伺服器 _不能_ 寫入您的主目錄,例如)。這就是我們在示例中使用 /tmp(不安全)的原因。

您也可以使用命令列匯出資料

mysql < query.txt > output.txt

其中 query.txt 包含一個 sql 查詢,輸出將儲存在 output.txt 中

匯入資料

[編輯 | 編輯原始碼]

在另一個數據庫/計算機/等中,可以匯入資料

 LOAD DATA INFILE '/tmp/test' INTO TABLE destinataire;

其他選項包括

 FIELDS TERMINATED BY '\t'
 LINES TERMINATED BY '\n'
 IGNORE 1 LINES

指定文件的設定方式以及是否存在標題。如果資料檔案中的列與資料庫表的列不對應,則可以將它們對映起來,因此也可以使用虛擬變數省略某些列

 LOAD DATA LOCAL INFILE
 '/tmp/test'
 INTO TABLE destinataire 
 FIELDS TERMINATED BY '\t'
 LINES TERMINATED BY '\n'
 IGNORE 1 LINES 
 ( 
 @dummy,
 name,
 phone_number,
 @dummy,
 @dummy,
 @dummy,
 @dummy,
 @dummy,
 @dummy,
 @dummy
 )

在這個例子中,我們只需要資料檔案的第二列和第三列,並將這些值儲存在我們資料庫表的 name 和 phone_number 列中。

內容說明

[編輯 | 編輯原始碼]

要匯入一個建立使用者及其資料庫的 .sql 檔案,需要知道該使用者是否已存在於伺服器上,因為 MySQL 沒有 DROP USER IF EXISTS。相反,它適用於資料庫

DROP DATABASE IF EXISTS `base1`;
CREATE DATABASE `base1` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `base1`;
--DROP USER `user1`@'localhost';
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'p@ssword1';
GRANT USAGE ON *.* TO 'user1'@'localhost' IDENTIFIED BY 'p@ssword1';
GRANT ALL PRIVILEGES ON `base1`.* TO 'user1'@'localhost';

PS:如果此命令返回 "DROP DATABASE" statements are disabled,使用 PhpMyAdmin,修改 config.default.php,將 $cfg['AllowUserDropDatabase'] 切換到 true,並清空導航器快取。

華夏公益教科書