SELECT into outfile 备份数据库数据

select email into outfile "test.txt" from email;


select substring(boss,0,2),addr from guest;


LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE “/opt/abc.txt" INTO TABLE table_name


FIELDS TERMINATED BY ',' (column1, column2,colum3);


mysql> SELECT * FROM table1 INTO OUTFILE 'data.txt'
FIELDS TERMINATED BY ','
FROM ...


为了将由逗号分隔的文件读回来,正确的语句将是:


mysql> LOAD DATA INFILE 'data.txt' INTO TABLE table2
FIELDS TERMINATED BY ',';


相反,如果你试图用下面显示的语句读取文件,它不会工作,因为它命令LOAD DATA INFILE在字段之间


寻找定位符:


mysql> LOAD DATA INFILE 'data.txt' INTO TABLE table2
FIELDS TERMINATED BY '\t';


可能的结果是每个输入行将被解释为单个的字段。


LOAD DATA INFILE能被用来读取从外部来源获得的文件。例如,以dBASE格式的文件将有由逗号分隔并用


双引号包围的字段。如果文件中的行由换行符终止,下面显示的命令说明你将用来装载文件的字段和行


处理选项:


mysql> LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';


任何字段或行处理选项可以指定一个空字符串('')。如果不是空,FIELDS [OPTIONALLY] ENCLOSED BY和


FIELDS ESCAPED BY值必须是一个单个字符。FIELDS TERMINATED BY和LINES TERMINATED BY值可以是超


过一个字符。例如,写入由回车换行符对(CR+LF)终止的行,或读取包含这样行的一个文件,指定一个


LINES TERMINATED BY '\r \n'子句。


FIELDS [OPTIONALLY] ENCLOSED BY控制字段的包围字符。对于输出 (SELECT ... INTO OUTFILE),如果


你省略OPTIONALLY,所有的字段由ENCLOSED BY字符包围。对于这样的输出的一个例子(使用一个逗号作


为字段分隔符)显示在下面:


"1","a string","100.20"
"2","a string containing a , comma","102.20"
"3","a string containing a \" quote","102.20"
"4","a string containing a \", quote and comma","102.20"


=================


insert into tabl(id,email) select id, email from guest;
MySQL 中的 `SELECT ... INTO OUTFILE` 查询是一种非常高效的将数据库数据导出到外部文本文件的方法。该功能允许用户直接从 SQL 查询中生成一个文件,通常用于备份或迁移数据。 ### 基本语法 基本语法如下: ```sql SELECT column1, column2, ... INTO OUTFILE 'file_path' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM your_table WHERE conditions; ``` - `column1, column2, ...`:指定要查询并导出的字段。 - `'file_path'`:文件在服务器上的完整路径和文件名。 - `FIELDS TERMINATED BY`:设置字段之间的分隔符,默认为逗号 `,`。 - `ENCLOSED BY`:设置字段的包围符号,如双引号 `"`。 - `LINES TERMINATED BY`:设置每行记录之间的分隔符,可以是 `\n`(换行)或 `\r\n`(Windows 风格换行)等。 ### 示例 假设有一个名为 `employee` 的表,并希望将其所有内容导出到 `D:\employee.txt` 文件中,字段之间用逗号分隔,每个字段由双引号包裹,每行以换行符结束: ```sql SELECT * FROM employee INTO OUTFILE 'D:\\employee.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'; ``` 此命令会将 `employee` 表的所有数据写入 `D:\employee.txt` 文件中,并按照指定格式进行组织[^1]。 ### 注意事项 1. **权限问题**:MySQL 服务需要对目标目录具有写权限。例如,如果尝试将文件写入 `/data/` 目录而没有适当权限,则可能会收到错误信息,例如: ``` ERROR 1 (HY000): Can't create/write to file '/data/test.xls' (Errcode: 13) ``` 在这种情况下,应检查 MySQL 用户对目标目录的访问权限,或者选择其他有写权限的目录,如 `/tmp/`。 2. **文件覆盖**:如果目标文件已经存在,`INTO OUTFILE` 会报错而不是覆盖现有文件。因此,确保文件路径指向一个不存在的文件。 3. **安全性**:由于 `INTO OUTFILE` 可能被用于恶意目的(例如写入可执行脚本),一些托管环境可能会禁用此功能。确保了解服务器的安全策略。 4. **使用场景**:虽然 `INTO OUTFILE` 是一种快速导出方式,但在某些情况下也可以使用其他方法,例如通过命令行工具导出数据: ```bash mysql -h host -u user -p -e "SELECT * FROM table" database_name > output_file.txt ``` 这种方法特别适用于自动化脚本或定时任务中导出数据。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值