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