-
Python实现数据库数据导入Excel
2017-03-06 18:53:47之前已经使用SchemaSpy工具分析了数据库的结构,之后就可以比较方便的将数据从数据库导出到Excel等文件中,这次我选择使用Python来完成这个工作。之前已经使用SchemaSpy工具分析了数据库的结构,之后就可以比较方便的将数据从数据库导出到Excel等文件中,这次我选择使用Python来完成这个工作。
1 任务简介
把PostgreSql数据库中5张表的数据导出到Excel文件中,查询的字段涉及到5张表,所以需要联合查询,其中还有两张表存在自引用,所以还会更复杂一些。
2 工具
- 使用
psycopg2
模块连接数据库 - 使用
xlwt
模块操作Excel文件
2.1 psycopg2
这个模块用法很常规,
- 连接数据库
- 执行SQL
- 获取结果
重点在于SQL语句的构造,因为涉及多个表,所以不得已要使用
join
,那么为了考虑效率应当把数据量大的表放在小表的前面。2.2 xlwt
这个模块用于写Excel文件,与之对应的还有
xlrd
来完成读文件的操作。
用法也很简单,- 新建Excel文件
- 新建sheet表
- 定位起始单元格
- 写内容
- 保存&关闭文件
需要注意的问题有两点:
- 文件编码,新建文件时需要指明
utf-8
- 表格大小,由于xls文件最多只能到65535行,所以表过大的时候要么换
xlsx
格式,要么切分成多个表。Python处理xlsx
的模块是xlsxwriter
3 代码
具体实现如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- import psycopg2 import xlwt hostIp = '127.0.0.1' port = '5432' dbName = 'source' user = 'liuyueyi' password = 'password' sql = ''' select site.name,study.name,sheets.id,sheets.patient_name,crf.label,section.label,form_rows.uid,form_rows.label,sheet_row_values.value from sheet_row_values inner join form_rows on form_rows.uid = sheet_row_values.uid inner join form_groups section on section.id = form_rows.group_id inner join form_groups crf on section.parent_id = crf.id inner join sheets on sheets.id = sheet_row_values.sheet_id inner join departments site on sheets.center_id = site.id inner join departments study on site.parent_id = study.id; ''' file = xlwt.Workbook(encoding='utf-8') sheet1 = file.add_sheet(u'sheet1') row0 = [u'site_name',u'study_name',u'sheets_id',u'patient_name',u'crf_name',u'section_name',u'form_rows_uid',u'form_rows_label',u'row_value'] for i in range(0, len(row0)): sheet1.write(0,i,row0[i]) conn = psycopg2.connect(database=dbName,host=hostIp,port=port,user=user,password=password) cur = conn.cursor() cur.execute(sql) rows = cur.fetchall() for i in range(0,len(rows)): for j in range(0,len(rows[i])): sheet1.write(i+1,j,rows[i][j]) file.save('result.xls')
- 使用
-
java从数据库导入excel
2018-03-23 09:50:58java把数据从数据库导入到excel package com.madhouse.sys.util; import java.io.File;import java.io.IOException; import java.sql.DriverManager;import java.sql.ResultSet;import java.sql....java把数据从数据库导入到excel
package
com.madhouse.sys.util;
import
java.io.File;
import
java.io.IOException;
import
java.sql.DriverManager;
import
java.sql.ResultSet;
import
java.sql.ResultSetMetaData;
import
java.sql.SQLException;
import
jxl.Workbook;
import
jxl.write.Label;
import
jxl.write.WritableSheet;
import
jxl.write.WritableWorkbook;
import
jxl.write.WriteException;
import
jxl.write.biff.RowsExceededException;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
import
com.mysql.jdbc.Connection;
import
com.mysql.jdbc.Statement;
/**
* <li>把数据导入到Excel公用类</li>
* </br> This is about <code>ExcelUtil</code>
*
* @author hjy273
* @version 1.0
* @date Sep 6, 2008 9:52:52 PM
*/
public
class
ExcelUtil {
private
static
Log log = LogFactory.getLog(ExcelUtil.
class
);
public
ExcelUtil() {
}
public
boolean
DB2Excel(ResultSet rs) {
boolean
flag =
false
;
WritableWorkbook workbook =
null
;
WritableSheet sheet =
null
;
Label label =
null
;
// 创建Excel表
try
{
workbook = Workbook.createWorkbook(
new
File(
"e:/_report/output.csv"
));
//workbook = Workbook.createWorkbook(os);
// 创建Excel表中的sheet
sheet = workbook.createSheet(
"First Sheet"
,
0
);
// 向Excel中添加数据
ResultSetMetaData rsmd = rs.getMetaData();
int
columnCount = rsmd.getColumnCount();
String colName =
null
;
int
row =
0
;
// 添加标题
for
(
int
i =
0
; i < columnCount; i++) {
colName = rsmd.getColumnName(i +
1
);
label =
new
Label(i, row, colName);
// log.debug("标题:"+i+"---"+row +"---"+ colName);
sheet.addCell(label);
}
row++;
log.debug(
"写入标题成功"
);
while
(rs.next()) {
for
(
int
i =
0
; i < columnCount; i++) {
label =
new
Label(i, row, rs.getString(i +
1
));
log.debug(
"行:"
+i+
"---"
+row +
"---"
+ rs.getString(i+
1
));
sheet.addCell(label);
}
row++;
}
log.debug(
"写入内容成功"
);
// 关闭文件
workbook.write();
workbook.close();
log.info(
"数据成功写入Excel"
);
flag =
true
;
}
catch
(SQLException e) {
log.debug(e.getMessage());
}
catch
(RowsExceededException e) {
log.debug(e.getMessage());
}
catch
(WriteException e) {
log.debug(e.getMessage());
}
catch
(IOException e) {
log.debug(e.getMessage());
}
finally
{
try
{
workbook.close();
}
catch
(Exception e) {
}
}
return
flag;
}
/**
* 测试方法
*
* @param args
*/
public
static
void
main(String[] args) {
// write your code
try
{
Class.forName(
"org.gjt.mm.mysql.Driver"
).newInstance();
Connection conn = (Connection) DriverManager
.getConnection(
"jdbc:mysql://localhost:3306/firewall?useUnicode=true&characterEncoding=utf8"
,
"root"
,
"root"
);
Statement st = (Statement) conn.createStatement();
ResultSet rs = st
.executeQuery(
"select * from firewall.tb_operator"
);
if
(!
new
ExcelUtil().DB2Excel(rs)){
log.info(
"数据写入失败"
);
}
rs.close();
st.close();
conn.close();
}
catch
(Exception e) {
e.printStackTrace();
}
}
}
-
数据库与Excel表格链接PHP,php连接excel表格数据库数据库-导入excel文件,后端php处理导入的数据并存入数据...
2021-03-23 23:03:19如何使用php实现将数据从excel表导入到mysql中?把excel 改为 cvs文件//连数据件$connect=mysql_connect("localhost","admin","admin") or die("链接数据库!");//连接数据库(test)mysql_select_db("testcg",$...如何使用php实现将数据从excel表导入到mysql中?
把excel 改为 cvs文件
//连数据件
$connect=mysql_connect("localhost","admin","admin") or die("链接数据库!");
//连接数据库(test)
mysql_select_db("testcg",$connect) or die (mysql_error());
$temp=file("test.csv");//连接EXCEL文件,格式为了.csv
for ($i=0;$i
{
$string=explode(",",$temp[$i]);//通过循环得EXCEL文件中每行记录的值
//将EXCEL文件中每行记录的值插入到数据库中
$q="insert into ceshi (name,num,dom) values('$string[0]','$string[1]','$string[2]');";
mysql_query($q) or die (mysql_error());
if (!mysql_error());
{
echo " 成功导入数据!";
}
echo $string[4]."\n";
unset($string);
}
?>
原生PHP代码实现excel导入,并添加数据到数据库.
把excel 改为 cvs文件
//连数据件
$connect=mysql_connect("localhost","admin","admin") or die("链接数据库!");
//连接数据库(test)
mysql_select_db("testcg",$connect) or die (mysql_error());
$temp=file("test.csv");//连接EXCEL文件,格式为了.csv
for ($i=0;$i
{
$string=explode(",",$temp[$i]);//通过循环得EXCEL文件中每行记录的值
//将EXCEL文件中每行记录的值插入到数据库中
$q="insert into ceshi (name,num,dom) values('$string[0]','$string[1]','$string[2]');";
mysql_query($q) or die (mysql_error());
if (!mysql_error());
{
echo " 成功导入数据!";
}
echo $string[4]."\n";
unset($string);
}
?>
导入excel文件,后端php处理导入的数据并存入数据...
我用的代码是:
//连文件
$connect=mysql_connect("localhost","admin","admin") or die("链接数据库失败!");
//连接数据库(test)
mysql_select_db("testcg",$connect) or die (mysql_error());
$temp=file("test.csv");//连接EXCEL文件,格式为了.csv
for ($i=0;$i
{
$string=explode(",",$temp[$i]);//通过循环EXCEL文件中每行记录的值
//将EXCEL文件中每行记录的值插入到数据库中
$q="insert into ceshi (name,num,dom) values('$string[0]','$string[1]','$string[2]');";
mysql_query($q) or die (mysql_error());
if (!mysql_error());
{
echo " 成功导入数据!";
}
echo $string[4]."\n";
unset($string);
}
?>
--------------------------------------------------------------------------------
phpexcel或者pear的一个组件 ,国内有一个excelclass的插件
都是用来处理excel的,前2个功能都比较强大,对编码的支持也都不错,推荐使用pear的那个,名字好像叫spreadsheet reader
phpexcel比较费资源,不过并不是所有的excel都能读取
楼主可以到这里去看看 pear.php.net
--------------------------------------------------------------------------------
顶楼上的回答~~顺便接个分!嘿嘿
--------------------------------------------------------------------------------
AdO直接上传
注意有些字符mysql或ADO可能不支持
--------------------------------------------------------------------------------
首先确认你的数据库是什么编码的,以utf-8为例,
你首先打开excel 文件,然后保存,选择为另存为.csv文件。
然后用文本编辑器打开.csv文件,另存为utf-8的csv
然后你写php 可以使用php 的getcsv 打开(这样确保你有的字段中含有,而导致解析错误),然后把解析的结果导入到数据库中。
然后完了。
PHPExcel如何从excel表导入到mysql数据库
'写入库.
oconn.execute(insert
into
users(userid,password)values('
-
PHP写的从数据库导入到EXCEL
2020-12-14 22:00:36原理: 是原理很分页原理一样!... Excel类 PHP code class Excel{ var $header = "<?xml version="1.0" encoding="utf-8"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xm -
将大量数据从数据库导入到Excel文档
2012-09-21 22:21:33这是我在公司实习的时候研究的课题,主要将大量数据从数据库导出到Excel文件。(一般是值Excel2007及以后版本)因为Excel2003及以前的版本中能保持的数据量是有限制的。Excel2007及以后版本中的数据能保持100万条... -
数据库数据导入到excel中 jsp
2009-01-05 13:20:15数据库数据导入到excel中 jsp 实例中包括: 从excel导入到数据库中 从数据库导入到excel中 -
java把数据从数据库导入到excel
2013-05-30 15:48:50[1].[代码] view source ...java把数据从数据库导入到excel 002 003 004 package com.madhouse.sys.util;[1].[代码]
001
java把数据从数据库导入到excel
002
003
004
package
com.madhouse.sys.util;
005
006
import
java.io.File;
007
import
java.io.IOException;
008
009
import
java.sql.DriverManager;
010
import
java.sql.ResultSet;
011
import
java.sql.ResultSetMetaData;
012
import
java.sql.SQLException;
013
014
import
jxl.Workbook;
015
import
jxl.write.Label;
016
import
jxl.write.WritableSheet;
017
import
jxl.write.WritableWorkbook;
018
import
jxl.write.WriteException;
019
import
jxl.write.biff.RowsExceededException;
020
021
import
org.apache.commons.logging.Log;
022
import
org.apache.commons.logging.LogFactory;
023
024
import
com.mysql.jdbc.Connection;
025
import
com.mysql.jdbc.Statement;
026
027
/**
028
* <li>把数据导入到Excel公用类</li>
029
* </br> This is about <code>ExcelUtil</code>
030
*
031
* @author hjy273
032
* @version 1.0
033
* @date Sep 6, 2008 9:52:52 PM
034
*/
035
public
class
ExcelUtil {
036
037
private
static
Log log = LogFactory.getLog(ExcelUtil.
class
);
038
039
public
ExcelUtil() {
040
041
}
042
043
public
boolean
DB2Excel(ResultSet rs) {
044
boolean
flag =
false
;
045
WritableWorkbook workbook =
null
;
046
WritableSheet sheet =
null
;
047
Label label =
null
;
048
049
// 创建Excel表
050
try
{
051
workbook = Workbook.createWorkbook(
new
File(
"e:/_report/output.csv"
));
052
//workbook = Workbook.createWorkbook(os);
053
054
// 创建Excel表中的sheet
055
sheet = workbook.createSheet(
"First Sheet"
,
0
);
056
057
// 向Excel中添加数据
058
ResultSetMetaData rsmd = rs.getMetaData();
059
int
columnCount = rsmd.getColumnCount();
060
String colName =
null
;
061
int
row =
0
;
062
// 添加标题
063
for
(
int
i =
0
; i < columnCount; i++) {
064
colName = rsmd.getColumnName(i +
1
);
065
label =
new
Label(i, row, colName);
066
// log.debug("标题:"+i+"---"+row +"---"+ colName);
067
sheet.addCell(label);
068
}
069
row++;
070
log.debug(
"写入标题成功"
);
071
while
(rs.next()) {
072
for
(
int
i =
0
; i < columnCount; i++) {
073
label =
new
Label(i, row, rs.getString(i +
1
));
074
log.debug(
"行:"
+i+
"---"
+row +
"---"
+ rs.getString(i+
1
));
075
sheet.addCell(label);
076
}
077
row++;
078
}
079
log.debug(
"写入内容成功"
);
080
081
// 关闭文件
082
workbook.write();
083
workbook.close();
084
log.info(
"数据成功写入Excel"
);
085
flag =
true
;
086
}
catch
(SQLException e) {
087
log.debug(e.getMessage());
088
}
catch
(RowsExceededException e) {
089
log.debug(e.getMessage());
090
}
catch
(WriteException e) {
091
log.debug(e.getMessage());
092
}
catch
(IOException e) {
093
log.debug(e.getMessage());
094
}
finally
{
095
try
{
096
workbook.close();
097
}
catch
(Exception e) {
098
}
099
}
100
return
flag;
101
}
102
103
/**
104
* 测试方法
105
*
106
* @param args
107
*/
108
public
static
void
main(String[] args) {
109
// write your code
110
try
{
111
112
Class.forName(
"org.gjt.mm.mysql.Driver"
).newInstance();
113
Connection conn = (Connection) DriverManager
114
.getConnection(
115
"jdbc:mysql://localhost:3306/firewall?useUnicode=true&characterEncoding=utf8"
,
116
"root"
,
"root"
);
117
Statement st = (Statement) conn.createStatement();
118
ResultSet rs = st
119
.executeQuery(
"select * from firewall.tb_operator"
);
120
if
(!
new
ExcelUtil().DB2Excel(rs)){
121
log.info(
"数据写入失败"
);
122
}
123
rs.close();
124
st.close();
125
conn.close();
126
127
}
catch
(Exception e) {
128
e.printStackTrace();
129
}
130
131
}
132
133
}
-
Java处理数据 —— 从Excel导入到数据库,从数据库导出到Excel表中
2021-01-25 12:48:45把存储在在Excel中的多条User类数据导入到目标数据库 准备阶段: 配置了Mysql数据库 编译器导入了 jxl.jar 包,Excel表格处理包 编译器导入了 sql.jar 包,Mysql包 全部代码如下: JavaBean类(User类): package... -
Java数据库导入Excel
2011-07-18 10:32:29java中从数据库导出数据到Excel存到本地。 -
C#数据库数据导入导出系列之二 数据库导出到Excel上
2019-10-07 14:24:46在日常的项目中,Excel,Word,txt等格式的数据导入到数据库中是很常见的,我在这里做一下总结 这里将分为Asp.net导入Sql Server,Oracle数据库和WinForm导入Sql Server,Oracle数据库。 1,使用DataGird生成Excel... -
java从EXCEL导入到数据库,从数据库导出到Excel
2017-03-14 10:06:03* 从EXCEL导入到数据库 */ public class ObjectExcelRead { /** * @param filepath //文件路径 * @param filename //文件名 * @param startrow //开始行号 * @param startcol //开始列号 * @param ... -
数据库导入Excel-从基础做起
2014-06-25 20:58:41最近一直跟着师傅做考试系统的基础,每天与大量的数据打交道,数据的导入、数据的导出、视图的导入导出、核对信息等等,收获挺多...数据量很大,5000多条数据,一条一条写进去是不可能的,那么就直接导入Excel吧.(导出数据 -
openpyxl从数据库导入数据到excel
2018-09-07 17:25:28这是一个用openpyxl连接mysql数据库并获取数据库数据写入到excel的一个py文件 -
c excel批量导入mysql数据库_从Excel文件读取数据批量导入到Mysql数据库
2021-02-06 14:21:11这些天有个项目用到了PHP+MySQL和Excel的交互,需要导入和导出。所以,昨天摸索了一下,发现网上有很多有问题。经过自己的测试,我的可以正常在服务器上运行,在这里和大家分享一下。准备文件:1)首先准备好PHPExcel... -
java数据库导入excel数据
2019-09-24 10:38:271、excel数据表中的数据不全,数据库中又是必填选项;---从sql语句入手:判断有无 来改变语句 //设置可有可无 字段 加一个必有字段 String optionals = "hospital_id "; String biyou = map.get(... -
数据库导入excel数据
2017-08-07 17:28:381. 在导入数据阶段出现: line contains NULL byte时,即行包含空字符。 解决方法: ...把现有的CSV文件另存为“csv”,然后重新导入即可;...这是因为 之前 的CSV有可能是直接从xls重命名而来,导致格式不一致。 -
一个通用从数据库导出excel、excel导入数据库组件所用到的jar包
2014-01-06 17:12:54一个通用从数据库导出excel、excel导入数据库组件的Java项目程序所用到的jar包。 -
.net 实现数据库的导入导出EXCEL
2014-02-20 11:11:12本代码通过.NET实现了从EXCEL导入数据到SQLServer和SQLServer导出数据到EXCEL 的导入导出功能 -
数据库 导入 导出 Excel(程序和源码)
2011-04-05 22:49:08程序可以完成从 数据库 生成 Excel 或者从Excel导入数据库 还可以用这个来轻量级的操作数据库 程序是用C#写的,如果机器不能运行本程序 可以安装.net 平台库 -
从数据库导入Excel的方法总结
2006-12-15 13:04:00要在ASP.Net中把数据库中的数据导入到Excel中有如下的几种方法:一. RenderControl的方法 1*2*//byXiaoYin[10/22/2006]3*/4usingSystem;5usingSystem.Data;6usingSystem.Configuration;7usingSystem.Web;8...