百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

导出MySQL数据到csv文件(导出mysql数据库)

itomcoil 2025-07-27 21:13 3 浏览

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文件
}

相关推荐

字符串可以这样加索引,你知吗?(字符串怎么加)

相信大多数小伙伴跟咔咔一样,给字符串添加索引从未设置过长度,今天就来聊聊如何正确的给字符串加索引。一、如何建立索引大多数系统都会存在用户表,并且系统初始设计使用了手机号码登录的。这是产品提出了一个需求...

MySQL高频函数Top10!数据分析效率翻倍,拒绝无效加班!

引言:为什么你的SQL代码又臭又长?“同事3行代码搞定的事,你写了30行?”“每次处理日期、字符串都抓狂,疯狂百度?”——不是你不努力,而是没掌握这些高频函数!本文精炼8年数据库开发经验,总结出10个...

上亿数据怎么玩深度分页?兼容MySQL + ES + MongoDB

推荐学习阿里P8MySQL,基础/索引/锁/日志/调优都不误,一锅深扒端给你“吃”完这本Java性能调优实战,MySQL+JVM+Tomcat等问题一键全消面试题&真实经历面试题:在数据量很大的情...

Hive如何比较两张表所有字段的一致性

前言随着MySQL技术发展,通过垂直或水平拆分能够支持相当大的数据量,目前很多公司把SQLServer、Oracledb或其他数据库迁移到MySQL上,迁移数据量很大(数据库已经水平拆分成很多Sha...

MySql:函数盘点(mysql函数用法)

一、MySQL函数1、数学函数常用的有:(1)ABS()绝对值(2)CEILING()大于等于我的最小整数(天花板)(3)FLOOR()小于等于我的最大整数(地板)(4)RAND()返回0~1...

mysql的截取函数用法详解(mysql截取字符串函数的sql语句)

substring()函数测试数据准备:用法:以下语法是mysql自动提示的1:substirng(str,pos):从指定位置开始截取一直到数据完成str:需要截取的字段的pos:开始截取的位置。从...

mysql拼接函数讲解及配合截取函数使用

在上一篇我们讲解了mysql的截取函数用法。本篇我们将讲解mysql的拼接函数以及配合截取函数实现当留言数字过多省略显示的场景。concat函数:把参数连成一个长字符串并返回(任何参数是NULL时返回...

MySQL实现字段分割(一行转多行)(mysql 分割)

先看一下数据结构,我这里字段比较少,只弄了最重要的部分根据我们上次学到的LEFT()函数进行分组SELECTLEFT(provinces,6),COUNT(1)FROM`region_map_c...

MySQL(143)如何优化分页查询?(mysql高效分页查询)

优化分页查询是提升数据库性能和用户体验的重要手段。特别是在处理大数据集时,分页查询的效率对系统性能有显著影响。以下是优化分页查询的详细步骤和代码示例。一、传统分页查询传统的分页查询使用OFFSET...

Go语言实现连接MySql基础操作(golang mysql orm)

在Go中,可以使用database/sql包来连接和操作MySQL数据库。以下是一个简单的示例程序,它演示了如何连接MySQL数据库并执行查询操作:packagemainimpo...

MySQL 如何巧妙解决 Too many connections 报错?

1.背景在日常的MySQL运维中,难免会出现参数设置不合理,导致MySQL在使用过程中出现各种各样的问题。今天,我们就来讲解一下MySQL运维中一种常见的问题:最大连接数设置不合理,一旦...

MYSQL数据同步(mysql数据同步机制)

java开发工程师在实际的开发经常会需要实现两台不同机器上的MySQL数据库的数据同步,要解决这个问题不难,无非就是mysql数据库的数据同步问题。但要看你是一次性的数据同步需求,还是定时数据同步,亦...

Go语言MySQL的简单应用(go mysql prepare)

要在Go中处理MySQL数据库,可以使用第三方包,例如go-sql-driver/mysql。以下是一个简单的示例代码:packagemainimport("dat...

最简洁详细的SSM框架整合(ssm框架完整的功能流程)

创建项目和SSM框架整合思路一、创建项目因为后面会配置springMVC,所以用IDEA的web骨架创建一个maven项目。创建项目目录如下,同时,项目需要的包和文件已手动创建好了:项目目录上图中,a...

部署canal server 1.1.5,消费mysql信息,订阅测试

一、CanalServer的核心架构CanalServer是阿里巴巴开源的MySQLbinlog增量订阅与消费组件,其架构设计围绕高可用、高性能、低延迟三大目标构建,主要包含以下核心...