数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

从MySQL导出XLS数据库工具(跨平台)


发布日期:2024年05月07日
 
从MySQL导出XLS数据库工具(跨平台)

这个脚本是使用Perl生成excel xls文件的工具依赖一些模块你可以在linux下使用产生xls文件使用方式是命令行+参数非常方便这个脚本是使用Perl生成excel xls文件的工具依赖一些模块你可以在linux下使用产生xls文件使用方式是命令行+参数非常方便

#!/usr/bin/perl

#===============================

# mysql to excel

# lastmodify at

# copyright by hoowa

#=============================

use strict; #严格语法检测

use DBI;#数据库引擎

use Unicode::Map; #Unicode引擎

#use Spreadsheet::WriteExcel; #Excel报表引擎

use Spreadsheet::WriteExcel::Big; #大文件Excel报表引擎

my $hostname=;

my $username=user;

my $password=pass;

my $dbname=db;

my $trans_compress=; #任何非一的数关闭数据库到程序间传输压缩

$|=;

my @cols=(A:AB:BC:CD:DE:EF:FG:GH:HI:IJ:J

K:KL:LM:MN:NO:OP:PQ:QR:RS:ST:TU:U

V:VW:WX:XY:YZ:ZAA:ABB:BCC:CDD:DEE:E

FF:FGG:GHH:HII:IJJ:JKK:KLL:LMM:MNN:N

OO:OPP:PQQ:QRR:RSS:STT:TUU:UVV:VWW:W

XX:XYY:YZZ:Z);

#解析来内容

if ($#ARGV != ) {

print qq~syntax: myexcelpl <writefilename> [where expression]

~;

exit;

}

$ARGV[]=~ s/\//g;

warn qq~

mysql to excel

by hoowasun

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

sql: $ARGV[]

~;

my $dbh =

DBI>connect(DBI:mysql:mysql_compression=$trans_compress;

database=$dbname;host=$hostname$username$password);

my $sth = $dbh>prepare($ARGV[]) || die $dbh>errstr;

my $rows = $sth>execute() or die $sth>errstr;

warn rows: $rows found\n;

my @cols_name = @{$sth>{NAME}};

if ($#cols_name > $#cols) {

print table $ARGV[] fields out of allow!!(max num > ($#cols+))\n;

exit;

}

warn write to: $ARGV[]\n;

#生成GB编码系统

my $map = Unicode::Map>new(gb);

#产生报表

my $report = Spreadsheet::WriteExcel::Big>new($ARGV[]) || die 不能生成报表文件$!;

#创建报表的工作表

my $sheet = $report>add_worksheet(data_report);

#创建格式

my $title_style = $report>add_format(); $title_style>set_size(); $title_style>set_bold(); $title_style>set_align(center);

#初始化数据指针

my $sheet_col = ;

#创建表格

for (my $i=;$i<=$#cols_name ;$i++) {

$sheet>set_column($cols[$i] length($cols_name[$i])+);

$sheet>write_unicode($sheet_col$i$map>to_unicode($cols_name[$i])$title_style);

}

$sheet>freeze_panes( );#冻结行

while (my @row = $sth>fetchrow_array) {

$sheet_col++;

for (my $i=;$i<=$#cols_name ;$i++) {

next if ($row[$i] eq );

$sheet>write_unicode($sheet_col$i$map>to_unicode($row[$i]));

}

}

warn all done!!!\n;

#结束

END {

$report>close() if ($report);

$dbh>disconnect();

}               

上一篇:MySQL数据库的用户帐号管理基础知识

下一篇:mysql性能的检查和调优方法