导出MySQL数据到csv文件(mysql 导出数据 csv文件)
1、MySQL
方式1:
select * into outfile 'E:\\xxx\\test.csv'
fields terminated by ','
lines terminated by '\n'
from (select *from test) b;
方式2:
mysql -uroot test -e "sql语句" -N -s | sed -e 's/^/"/g;s/$/"\n/g' > /tmp/test.csv
#或者
mysql -uroot test -e "sql语句" > /tmp/test.csv
2、PHP
查询数据,通过逗号拼接字段数据,\n分割每一行数据
<?php
$host = 'localhost';
$user = '用户名';
$password = '密码';
$database = 'test';
$port = '端口';
$conn = mysqli_init();
$conn->connect($host, $user, $password, $database, $port);
// SQL字段
$sql = 'select id,`name`,course,score from score';
$query = $conn->query($sql);
$data = [];
while ($row = $query->fetch_array(MYSQLI_NUM)) {
$data[] = $row;
}
$content = "id,name,course,score\n";
foreach ($data as $d) {
$content .= implode(',', $d) . "\n";
}
file_put_contents('file.csv', $content);
// 如果数据量大的话,请将数据循环写入文件,
// 而不是通过file_put_contents一次性写入文件
3、Go
下载github.com/tealeg/xlsx包,然后进行数据处理,另存为xlsx后缀的文件
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/tealeg/xlsx"
"strconv"
"time"
)
// mysql操作:https://www.jianshu.com/p/9b5cd762e256
// excel操作;https://studygolang.com/articles/5259
const (
DRIVER = "mysql"
USERNAME = "用户名"
PASSWORD = "密码"
HOST = "localhost"
PORT = "端口"
DATABASE = "test"
CHARSET = "utf8"
)
var db *sql.DB
var err error
type Score struct {
Id int64
Name string
Course string
Score int64
}
// db连接
func DbConn() {
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s", USERNAME, PASSWORD, HOST, PORT, DATABASE, CHARSET)
db, err = sql.Open(DRIVER, dsn)
if err != nil {
panic("数据源配置不正确:" + err.Error())
}
db.SetMaxOpenConns(100) // 最大连接数
db.SetMaxIdleConns(20) // 闲置连接数
db.SetConnMaxLifetime(100 * time.Second) // 最大连接周期
if err = db.Ping(); err != nil {
panic("数据库连接失败:" + err.Error())
}
}
var data = make([]Score, 0)
// 从db获取数据
func GetDataFromDb() {
sqlstr := "select * from score"
rows, _ := db.Query(sqlstr)
var result Score
for rows.Next() {
rows.Scan(&result.Id, &result.Name, &result.Course, &result.Score)
data = append(data, result)
}
//fmt.Println(data)
//fmt.Printf("%+v", data)
}
// 导出到csv文件
func ExportToCsvFile() {
file := xlsx.NewFile()
sheet, _ := file.AddSheet("Sheet1")
//row := sheet.AddRow()
//row.SetHeightCM(1) //设置每行的高度
//cell := row.AddCell()
//cell.Value = "hello"
//cell = row.AddCell()
//cell.Value = "world"
row := sheet.AddRow()
cell := row.AddCell()
cell.Value = "Id"
cell = row.AddCell()
cell.Value = "Name"
cell = row.AddCell()
cell.Value = "Course"
cell = row.AddCell()
cell.Value = "Score"
for _, item := range data {
row = sheet.AddRow()
cell = row.AddCell()
cell.Value = strconv.FormatInt(item.Id, 10)
cell = row.AddCell()
cell.Value = item.Name
cell = row.AddCell()
cell.Value = item.Course
cell = row.AddCell()
cell.Value = strconv.FormatInt(item.Score, 10)
}
err := file.Save("file.xlsx")
if err != nil {
panic(err)
}
}
func main() {
DbConn() //数据库连接
GetDataFromDb() // 从数据库获取数据
ExportToCsvFile() // 导出到csv文件
}
相关文章
- 电脑老是蓝屏,怎么解决呢?(电脑老蓝屏怎么回事?)
- 蓝屏解决办法汇总(蓝屏解决步骤)
- SpringBoot数据库操作的应用(springboot如何操作数据库)
- #已删除的、记录被删除的解决方案
- GORM 完全指南:从入门到精通,轻松玩转 MySQL 数据库
- 手把手教你!Spring Boot 整合 Apache Spark 玩转 MySQL 数据处理
- Go语言实现连接MySql基础操作(go语言连接mysql数据库)
- MySQL 如何巧妙解决 Too many connections 报错?
- MySQL合集-mysql5.7及mysql8的一些特性
- MYSQL数据同步(mysql数据同步方案)