跳转到内容

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,并清空导航器缓存。

华夏公益教科书