项目场景:
因为mysql服务器内网部署,无法使用navicat等数据库工具,只能使用命令行访问
解决方案:
提示:这里填写该问题的具体解决方案:
mysql -h 192.168.0.2 -P 13301 -u root -p -D my_db -B -e "select o.id, o.code from my_table o where o.create_time BETWEEN '2024-01-01 00:00:00' and '2025-07-01 00:00:00'" | sed 's/\t/,/g' > /var/lib/mysql/dump/result.csv
参数 | 作用 |
---|---|
mysql | 启动 MySQL 客户端命令行工具 |
-u root | 使用用户名 root 连接 |
-p | 提示输入密码(安全,不直接在命令里写密码) |
-D mydb | 指定要连接的数据库 mydb ,相当于 USE mydb; |
-B | 启用 批处理模式(Batch Mode):输出为 制表符分隔格式(TSV),更适合导出文件 |
-e "SQL" | 执行 SQL 语句(这里只执行 "SELECT * FROM mytable" )后退出 |
> result.csv | 将命令输出 重定向 到 result.csv 文件中(包含表头 + 内容,格式为 TSV) |
sed 's/\t/,/g'
是 sed(stream editor) 的一个替换命令,它的含义如下:
| 语法 | 含义 |
| ---- | -------------------------- |
|s
| 替换(substitute)操作 |
|\t
| 匹配一个 Tab 字符(\t
是制表符) |
|,
| 替换成英文逗号 |
|g
| 表示全局替换(行内所有匹配项都会替换) |