informix中怎么导入表结构

informix中怎么导入表结构,第1张

1、导出数据库中一个表的结构到文件testsql

[informix@localhost ~]$ dbschema -d your_database_name -t your_table_name testsql

your_database_name:数据库名(sysadmin)

your_table_name:表名(test)

[informix@localhost ~]$ dbschema -d sysadmin -t test testsql

2、导出表中的数据

用dbaccess命令进入informix *** 作数据库 *** 作界面,选择需要从中导出数据的库(sysadmin),输入下面sql 语句:

unload to 'testdmp' select from table;

3、执行testsql脚本,在zengxing数据库创建表

[informix@localhost ~]$ dbaccess zengxing testsql > importlog &

(重定向输出 > importlog,视乎没什么效果, & 后台执行)

4、导入表数据

用dbaccess命令进入informix *** 作数据库 *** 作界面,选择需要往里导入数据的库(zengxing),输入下面sql 语句:

load from 'testdmp' insert into test;

Navicat for MySQL 支持导出的数据表格式比较多,其中用户使用最为广泛的导出格式为 Excel 表格。最新版的 Navicat for MySQL 兼容最新版 office 的所有产品,包括 Excel 表格。

当设计完一个表后,如果有上百条或更多的原始数据需要导入到 Navicat for MySQL 数据库时,我们就可以先把设计好的数据导出到 Excel 表格中,然后按照格式去填充数据,最后把这些填充完的数据再导入到MySQL数据库中。

Navicat for MySQL 导出数据到 Excel 表格步骤如下:

步骤一 点击“导出向导”命令,选择表类型:Excel文件。

步骤二 选择导出表的存放位置。点击“全选”下拉按钮,选择导出表存放的位置,如“导出选择到相同的文件”将导出的Excel表存放到合适的位置,如“桌面”。

步骤三 选择需要导出的栏位(列),默认情况选中全部栏位。

步骤四 定义附加选项。建议勾选“包含列的标题”这一选项,这样在导出的Excel表的数据看起来比较完整。

步骤五 完成导出。

完成上面的各项设置后,我们点击“开始”按钮执行导出命令,导出完成后,在[Msg]消息窗中会有相关信息提示,如导出表的类别、存储位置等。

常用命令oninit

系统从off-line模式变为on-line模式oninit -iy

(初始化数据库,删除所有dbspace和chunk)oninit -s (

脱机-->静态)onmode -ky offlineonmode -s graceful shutdown-->quiescent(联机到静态,让用户处理完成)

onmode -u

immediate shutdown-->quiescent(联机到静态,所有用户立即终止)

onmode -m

quiescent--->onlineonmode -z sid 删除某session onmode -l 将当前正在使用的逻辑日志下移onmode -c

强制执行检查点 *** 作即onmonitor->force ckpt onstat - 查看服务器状态onstat -d 查看dbspace和chunk情况onstat -l

查看逻辑日志onstat -F 查看写入磁盘的页刷新和类型情况,从共享内存缓冲区向磁盘写入页面有三种方式(fg:前台写 LRU:队列写 chunk:块写)onstat -R

打印LRU队列onstat -p 显示系统的基本I/O与性能配置文件onstat -c 查看onconfig文件onstat -m 查看消息日志onstat -f

查看受DATASKIP影响的dbspaceonstat -x 查看事务onstat -k

显示所有活动的锁onstat -g sub_option 运行多线索选项

onstat -g ses/sql onstat -r <value> 每隔<value>秒后重复选项 onstat -g act

显示系统中所有的活动线索 onstat -g ath -r 2 每隔两秒显示系统中所有的活动的线索 onstat -i 交互方式 >sql>sql sidipcs

查看共享内存情况ipcrm

删除某个共享内存ipcrm -m id ipcrm -s id

Ontape命令:

1)零级(一级或二级)备份$>ontape -s$>ontape -s -L 0$>ontape -s -L 1$>ontape -s -L

2自动备份逻辑日志文件 $>ontape -a

3)连续逻辑日志备份(日志文件写满一个,online系统自动备份一个,你可以插盘磁带到磁带机上,让IDS自动备份。

要占用磁带机)$>ontape -c

4)备份恢复(对应零级备份或一级备份或二级备份)$>ontape -r (详细过程见ontape恢复文挡)

5)备份恢复几个DBSPACE(一定要存在逻辑日志备份,否则物理恢复完后,还是不能用)$>ontape -r -D dbs1 dbs2 。。。

6)配置HDR时使用的物理恢复$>ontape -p

7)修改数据库日志模式$>ontape -s -B db_name 修改为buffer_log 即缓冲日志模式$>ontape -s -U db_name

修改为unbuffer_log 即非缓冲日志模式$>ontape -s -N db_name

修改为无日志模式 数据库不含日志,即不支持事务,对数据库的任何修改都不会记录到逻辑日志中去$>ontape -s -A db_name

修改为ansi logging模式,从个模式无法改到其它模式,因此一般不要用该项。oncheck 命令 oncheck -pe

extendoncheck -ceoncheck -cr reserved pagesoncheck -cd TBLspace data rows including bitmaponcheck -ci

table indexes databases对逻辑日志的 *** 作:以informix用户登录, $ onmode -uy (由Online切换到Quiescent状态,所有用户立即中止)

onmode -m (切换到Online) $ onparams -a -d logdbs -s 100000 其中logdbs为dbspaces 名,-s 100000 表示增加了100M空间。

再连续执行4遍上述命令,这样新的逻辑日志空间总共为500M,可以用 onstat -l 查看逻辑日志情况,接下来就要删除前面3个旧逻辑日志,

删除前做一个0级备份 # ontape -s -L 0 执行该命令做0级备份,建议: 如果允许可以每天在业务系统结束工作

后做一次0级备份,做完备份后管理好备份磁带,做好标记。 $ onparams -d -l logid

logid 为逻辑日志id号,可以用onstat -l 查看,然后就可根据id号删 除3个旧逻辑日志。

将当前正在使用的逻辑日志下移 $onmode -l 三、DBSPACE及数据库导入导出1增加一个新的dbspace:(datadbs,15M, 偏移为0)

onspaces -c -d datadbs -p /home/informix/datadbs -o 0 -s 150002

在datadbs这一个dbspace中增加一个chunk:(datadbs_chunk1)onspaces -a datadbs -p /home/informix/datadbs_chunk1 -o 0 -s 150003将上述chunk删除onspaces -d datadbs -p /home/informix/datadbs_chunk1 -o 0 4删除dbspace(仅当要删除的dbspace空间没有数据时才可删除)onspace -d datadbs 导出数据库: 用dbexport工具将数据卸成文本,并装载到其它服务器上。(1)卸载文本的步骤如下:用informix用户注册 dbexport cleardb -o WORKDIR -ss 当系统提示dbexport completed!数据卸载完毕。其中: -ss 确保数据库的建库信息或建表信息被保留如日志模式、初始extent尺寸、lock mode、表所在dbspace等。 -o 指定存放卸载数据的目录数据存放在目录cleardbexp目录下,其中包含cleardbsql和形如unl的文件,

提示信息存放在dbexportout文件中。

(2)装载文本的步骤如下:用informix用户注册确保数据库处于On_Line状态,服务器上没有同名数据库。

dbimport cleardb -i WORKDIR 当系统dbimport completed!提示数据装载完毕。其中: -i

指定从何处装载。如何在不破坏库本身信息情况下(如行级锁等)将数据库卸载到磁带设备,并装载在其它服务器上?1)

p; 卸载的步骤如下:用DBA用户注册将存放数据的磁带插入磁带机,确认磁带及磁带机完好可用。

dbexport cleardb -t /dev/rmt/0m -b 512k -s 2048000k -ss当系统提示dbexport completed!数据卸载完毕。其中: -ss 确保数据库

的建库信息或建表信息被保留如日志模式,初始extent尺寸,lockmode,表所在dbspace -t 磁带设备/dev/rmt/0m -s

磁带容量2G -b 块大小512KB 提示信息存放在dbexportout文件中2)装载的步骤如下:

用DBA用户注册将存放卸载数据的磁带放在磁带机上,确认磁带机正常,确认数据库系统处于On_Line状态,

服务器上没有同名数据库。

$ dbimport cleardb -t /dev/rmt/0m -b 512k -s 2048000k 当系统dbimport completed 提示数据装载完毕!提示信息存放在dbimportout 文件中。

重建表格:1) dbschema -d dbname -t tabname -ss tabnamesql /将表格结构放进tabnamesql/编辑此文件并在create table

语句末尾增加新的区域长度暂时将生成表格索引的tabnamesql部分标为说明语句,即在索引句前后加上“{}”,

例如:{ create index xl on customer(last_name); create index x2 on customer(cust_nbr);}

最好在后面生成索引,因为这样表格能快速装入,索引能在连续磁盘空间生成,使其更加有效。

2)锁定表格lock table tabname in exclusive mode;

3)用SQL UNLOAD 将表格卸载到磁盘或磁带中unload to file_or_tape_path select from tabnameunload to "/usr/data/unload/customerunl" select from customer;

检查表中的行数(用SQL中的Table/Info命令),验证卸载是否成功。比较这个数与装入完成后SQL显示的消息。用此验证file_or_tape_path中的行数:wc -l file_or_tape_path

4)删除表格

5)用dbacess生产表格并运行tabnamesql。这时不要生成索引

6)用SQL的LOAD FROM 或用 dbload重新装入表格load from file_or_tape_path insert into tabname;load form "/usr/data/unload/customerunl" insert into customer;

对于日志数据库,上面的装入语句可能产生长事务或“to many lock”错误。

这时建议用dbload之类的实用程序将数据插入表中。dbload的 -n 选项强制在插入一定行后进行commit work(建议选1000行)。

检查表中的行数(用SQL中的Table/Info命令),验证装入是否成功。7)如要生产索引,运行第一步中标为说明语句的tabnamesql部分。

8)更新表格统计信息 update statistics on tabname;

语法 oninit [-s] [-i] [-p] [-y]

oninit 将系统从off-line模式变为on-line模式

oninit -s将系统从off-line模式变为quiescent模式

oninit -i初始化系统

oninit -p在共享内

存初始化时,不搜索,删除临时表

oninit -y对提示自动回答yes

oninit -v 加入这个选项显示oninit处理过程

oninit-- 键入此命令可以获得使用帮助

oninit命令用来改变系统的运行模式。其中-i选项用于初始化系统的root dbspace。注意,root-dbspace一旦被初始化,则等于整个数据库系统被初始化。

如果用户希望在计算机启动时自动自动启动动态服务器系统,请在系统初启文件(在许多UNIX系统中为/etc/rc)中加入oninit命令(不加任何选项)。

onmode 命令

语法: onmode [-k] [-m] [-s] [-u] [-y]

onmode -k 执行立即shutdown,将系统变为off-line模式

onmode -m 将系统从quiescent模式变为on-line模式

onmode -s 执行graceful shutdown

onmode -u 执行immediate shutdwon

onmode -y对提示自动回答yes

onmode 命令同样用于改变动态服务器的运行模式。除了上述选项外,onmode还有很多与改变系统运行模式无关的选项。

利用onspaces命令创建数据空间

语法: onspaces -c [-b] [-d] [-z] [-m] [-o] [-p] [-s] [-t]

-c创建blobspace或dbspace

-b blobspace blobspace名

-d dbspace dbspace名

-g page size  blobpages大小

-m mirror 镜像设备设的全路径名和偏移量(KB)

-o offset 偏移量(KB)

-p pathname chunk设备的全路径名

-s sizedbspace大小(KB)

-t创建临时dbspace

onspaces 命令用于创建数据空间、临时空间和存储blob数据的空间(blobspace)。键入onspaces--可以获得该命令的联机帮助。

利用onstat -D或onstat -d可以看到系统中的关于数据空间的重要信息。包括:chunk的状态、空闲、每一chunk读写的次数。

系统中可能包括的多个系统空间,特别当进行数据分片后,我们建议用户最好能利用命令行来创建数据空间。

可以利用如下命令创建数据空间:

onspaces -c -d datadbs1 -o 0 -p /dev/rrvol3 -s 60000

可以用如下的方式创建临时数据空间:

onspaces -c -d tempdbs1 -t -o 0 -p /dev/rrvol5 -s 80000

在系统中,临时数据空间非常重要,通常情况下,应将多个临时数据空间分布在独立的物理设备上。

利用onspaces命令删除数据空间

增加或删除chunks

语法: onspaces -a -d [-m] [-o] [-p]

-a spacename为dbspace新增chunk

-m pathname镜像设备的全路径名和偏移量(KB)

-o offset 主设备的偏移量(KB)

P>

-p pathname chunk设备的全路径名

-s sizechunk大小

-d spacename删除chunk

-o offset chunk设备的偏移量(KB)

onspaces不仅能创建数据空间还能删除数据空间、临时数据空间或存储blob数据的空间。在删除数据空间时,必须首先保证它是无用的,即该数据空间上无数据库或表。

如需删除数据空间,请键入如下命令:onspaces -d dbspace_name /blobspace_name

数据空间最初由一个chunk(first chunk)构成,一旦其空间用尽,用户必须追加chunk为了提高系统性能,用户在为数据空间分配chunk时需要计算以保证它的大小能适应未来的需要,否则在追加chunk的时候,它与先前的chunk在物理上不一定相邻,导致增加读取数据的时间。关于如何计算空间需求将在以后章节中阐述。利用 onspaces命令可以对数据空间增加或者删除chunk,除此之外,利用该命令还可以完成如下任务:启动镜像、中止镜像或改变chunk的状态。

例如可以用如下命令为数据空间增加chunk:

onspaces -a -d datadbs1 -0 60002 -p /dev/rrvol3 -s 60000

再如可以用如下方式从数据空间中删除chunk:

onspaces -d datadbs1 -o 60002 -p /dev/rrvol3 -s 60000

onparams 命令

语法:onparams -a -d -p [-d] [-s] [-l]

-a 新增逻辑日志

-d dbspace 指定日志存放的dbspace

-s size新增逻辑日志的大小(KB)

-d 删除逻辑日志

-l logid 指定删除一个逻辑日志

-p 改变物理日志

-d dbspace 新物理日志存放的dbspace名

-s size物理日志大小(KB)

系统在初始化时自动地在root dbspace中创建逻辑日志和物理日志。在DBMS系统中,尤其在OLTP环境下,数据库的 *** 作非常频繁,日志中必须记录大量的信息,所以用户最好能将多个日志文件分布在不同的设备上。有一种非常简单的方法:即按所需大小创建逻辑日志,同时创建一个较小的物理日志,系统初始化完毕后,再将物理日志移至其它设备。关于如何确定所需的物理日志的大小,将在以后的章节详述。利用onstat -l命令可以看出系统中所有新增的逻辑日志被标识为A。这些逻辑日志只有在系统进行归档后才会真正被使用。为了激活这些逻辑日志有一种简单的方法:执行一次"伪"归档。具体步骤如下:将参数TAPEDEV设置为/dev/null然后运行一次ontape -s。也可以执行onbar -F命令。由于伪归档并不真正归档系统信息,所以千万要适时地对系统进行真正的归档 *** 作。

只有在逻辑日志真正无用时才能将其删除。利用onstat -l 可以看出所有的空闲日志被标记为F。如果逻辑日志中包含事务回滚或快速恢复所需的信息,该逻辑日志是不能被删除的。利用onstat -l命令可以看出接受当前事务的日志被标记为C。如果逻辑日志包括最后一个检查点记录,它也是不能被删除的,只有当检查点记录被写入下一个日志忠并且上一个日志被备份后,该日志才能被删除。利用onstat -l命令可以看出包含最后一个检查点记录的日志被标记为L。用户可以利用

onmode -c命令强制写检查点记录直至最后一个检查点记录被写入所要求的日志为止。

onstat 工具

显示动态服务器共享内存中的信息

涉及少量磁盘I/O *** 作

将对系统性能的影响极小

提供关于系统有价值得信息

命令行交互式监控系统

在本章中将讲解onstat 的各种重要选项,请熟悉它们的使用

onstat 命令是一种非常有用的系统实时监控工具。该命令直接从共享内存的数据结构中读取信息,报告当时的系统状况。通常onstat 命令不会进行磁盘I/O *** 作,也不会对系统资源加锁,所以它对系统性能的影响减少到最小。简言之,onstat是informix提供的一种交互式的系统监控工具。

onstat 的一些常用选项:

onstat -- 列出所有选项

onstat -i 设置进入交互模式

onstat - 显示运行模式和数据库引擎状态

onstat -g sub_option 运行多线索选项

onstat -r 每隔秒后重复选项

onstat -g act 显示系统中所有的活动线索

onstat -g ath -r 2 每隔两秒显示系统中所有的活动的线索

系统监控界面

sysmaster数据库在系统初始化时自动创建

数据库中包括指向系统共享内存结构数据字典信息

提供瞬时的系统性能和状态信息

提供SQL界面了解数据字典信息

允许管理员将系统管理工作自动化

用于执行重复性的监控任务

系统监控界面(system Monitoring Interface --SMI)是一种基于SQL的系统工具,

用户通过SMI可以非常方便地获取系统信息。系统在初始化时,自动地在root dbapace创建sysmaster系统数据库。

每一系统包括一个sysmaster数据库,该数据库中的大部分表为虚表,是指向共享内存中数据结构的指针。利用SMI可以自动监控系统,特别是在执行重复任务时。

sysmaster数据库是只读的,即不允许对其进行INSERT UPDATE,或DELETE *** 作。所有用户都拥有对该数据库的查询权限。

在系统初始化后,用户一定要注意检查sysmaster数据库是否建立成功。创建sysmaster数据库的信息都保存在消息日志文件中(onlinelog)请注意由于所有的DDL语句都将被记录在日志中,

所以一定要在日志文件中留出足够的空间以保证创建sysmaster所需。

sysmaster数据库模式记录在$INFORMIXDIR/etc/sysmastersql文件中。

oncheck 命令

检查动态服务器磁盘上的数据结构

定位并修补损坏的索引和数据

有磁盘I/O *** 作

一些 *** 作在处理时将在表上加锁

oncheck命令用于修复磁盘上损坏的索引和数据页,该命令也可用于检查并打印系统的数据结构。在使用oncheck时一定要当心,因为改命令的某些选项会对表加共享锁,例如:oncheck -pt

>

为防止对系统的损坏,系统会对所有共享内存中的数据进行一次一致性检查。一旦发现数据页出现一致性错误或发现索引错误,系统将把问题和可能的解决方案(利用oncheck)写入消息日志文件,并返回isam错误代码105。

如果发现一致性错误信息,用户应该立即关闭系统并按消息日志文件中的提示运行oncheck。如果oncheck运行失败,则应尝试卸出表再重新装入;如果是索引得问题,则应先删除索引再重建之。如果所有这些步骤都失败了,只有根据原有的系统归档备份来恢复系统。

下面的命令可以提供extend信息:

oncheck -pe

在onstat –l中,flag位表示了逻辑日志的状态,

A表示新加了还不能使用的日志

F表示空闲的可以使用的日志,一般是在0级备份之后才有这样的状态

U表示已经使用的逻辑日志

L表示当前的日志文件包含一个检查点

C表示正在使用当前的日志文件

B表示已经备份的日志文件

在INFORMIX里面下载数据,可以使用SQL开发,核心语句是UNLOAD

TO

"file"

SELECT

语句,然后用DBACCESS执行,整个应用可以写为sh文件,让cron设置每天定时执行。sh程序可以根据当前的时间设置不同的输出文件名称。

每天上班的时候把UNLOAD的文件粘贴到EXCEL或者导入到你的桌面数据库,就可以形成报表,就不用每天深夜手工 *** 作下载数据。

关于Informix的意思

美国InfomixSoftware公司研制的关系型数据库管理系统。Informix有Informix-SE和Informix-Online两种版本。Informix-SE适用于UNIX和WindowsNT平台,是为中小规模的应用而设计的;Informix-Online在UNIX *** 作系统下运行,可以提供多线程服务器,支持对称多处理器,适用于大型应用。 Informix可以提供面向屏幕的数据输入询问及面向设计的询问语言报告生成器。数据定义包括定义关系、撤销关系、定义索引和重新定义索引等。Informix不仅可以建立数据库,还可以方便地重构数据库,系统的保护措施十分健全,不仅能使数据得到保护而不被权限外的用户存取,且能重新建立丢失了的文件及恢复被破坏了的数据。其文件的大小不受磁盘空间的限制,域的大小和记录的长度均可达2K。采用加下标顺序访问法,Informix与COBOL软件兼容,并支持C语言程序。 Informix可移植性强、兼容性好,在很多微型计算机和小型机上得到应用,尤其适用于中小型企业的人事、仓储及财务管理。

这个要用到透明网关,可以安装在这个数据库主机上,也可以是其它机器,建议用windows的, *** 作简单一些,熟悉后,再改用linux,透明网关这个机器上要安装informix的客户端,这个客户端还要能正常连接到informix服务器,透明网关上还要启动监听,然后在oracle数据库上建立到透明网关的dblink通过透明网关访问,这个说起来简单,写起来很麻烦

SP=storage procedure=存储过程

主类,界面:

package totabelview;

import javaawtBorderLayout;

import javaawtFlowLayout;

import javasqlConnection;

import javasqlSQLException;

import javasqlStatement;

import javautilVector;

import javaxnamingNameParser;

import javaxswing;

import javaxswingtableDefaultTableModel;

import javaxswingtableTableColumnModel;

import totabelactionTableAction;

import totabeldbJdbcConnection;

import totabelxlsExcelDemo;

public class TabelData {

/

用于将table表单中的数据导入到Excel文件中

@param args

/

private int rowSize;

private int columnSize;

private int row;

private JPanel buttonPanel;

private JTable tabel;

private JScrollPane panel;

private DefaultTableModel model;

private JPanel infoPanel;

TableAction action = new TableAction(this);

JTextField name = new JTextField(10);

JTextField score = new JTextField(10);

public static void main(String[] args) {

TabelData data = new TabelData();

datacreateFrame();

}

public void createFrame() {

JFrame frame = new JFrame("Table");

framesetSize(500, 500);

frameadd(createButtonPanel(),BorderLayoutNORTH);

frameadd(createInfoPanel(),BorderLayoutSOUTH);

frameadd(createScrPane(),BorderLayoutCENTER);

framesetLocationRelativeTo(null);

framesetVisible(true);

framesetDefaultCloseOperation(frameEXIT_ON_CLOSE);

}

private JPanel createButtonPanel(){

if(buttonPanel==null){

buttonPanel=new JPanel();

buttonPaneladd(createButton("删除"));

buttonPaneladd(createButton("添加"));

buttonPaneladd(createButton("导出到Excel"));

buttonPaneladd(createButton("从Excel导入"));

buttonPaneladd(createButton("从Excel导入到数据库"));

buttonPaneladd(createButton("从table导出到pdf"));

buttonPaneladd(createButton("计算学分"));//此处为商学院专用学分计算用

}

return buttonPanel;

}

private JPanel createInfoPanel() {

if (infoPanel == null) {

infoPanel = new JPanel();

JLabel nameLabel = new JLabel("姓名");

JLabel scoreLabel = new JLabel("成绩");

infoPaneladd(nameLabel);

infoPaneladd(name);

infoPaneladd(scoreLabel);

infoPaneladd(score);

}

return infoPanel;

}

private JScrollPane createScrPane() {

if (panel == null) {

panel = new JScrollPane(createTable());

}

return panel;

}

public JTable createTable() {

if (tabel == null) {

model = new DefaultTableModel(setTitle(), 0);

tabel = new JTable(model);

tabelsetAutoResizeMode(JTableAUTO_RESIZE_OFF);

}

return tabel;

}

private JButton createButton(String name) {

JButton button = new JButton(name);

buttonaddActionListener(action);

return button;

}

public Vector setTitle() {

Vector title = new Vector();

titleadd("姓名");

titleadd("成绩");

return title;

}

public void addData() {

Vector data1 = new Vector();

data1add(namegetText()trim());

data1add(scoregetText()trim());

modeladdRow(data1);

}

/

得到行数和列数

@return

/

public int getColumnSize() {

columnSize = tabelgetColumnCount();

return columnSize;

}

public int getRowSize() {

rowSize = tabelgetRowCount();

return rowSize;

}

/

按行列得到信息

@param row

@param column

@return

/

public String getTableInfo(int row, int column) {

String info = (String) tabelgetValueAt(row, column);

return info;

}

public void delRow() {

while (row != -1) {

getRow();

modelremoveRow(row);

getRow();

}

}

public int getRow() {

row = tabelgetSelectedRow();

return row;

}

/

将Excel数据导入到表单

/

public void getXlsInfo() {

ExcelDemo demo = new ExcelDemo();

modelsetDataVector(demogetXlsInfo(), demogetTitle());

}

public void getXlsInfoToCredit() {

ExcelDemo demo = new ExcelDemo();

modelsetDataVector(demogetXlsInfoToCredit(), demogetTitle());

}

public void toDb() {

ExcelDemo demo = new ExcelDemo();

JdbcConnection connection = JdbcConnectiongetCon();

Connection con = connectiongetConnection();

Statement sta = null;

try {

sta = concreateStatement();

} catch (SQLException e1) {

e1printStackTrace();

}

Vector[] v = demogetArray();

for (int i = 0; i < vlength; i++) {

String name = v[i]get(0)toString();

String score = v[i]get(1)toString();

Systemoutprintln(name + " " + score);

try {

String sql = "insert into score(stu_name,stu_score) values ('" + name

+ "'," + score + ")";

staexecuteUpdate(sql);

} catch (SQLException e) {

eprintStackTrace();

// Systemoutprintln("erro");

}

}

}

}

第二个类:

package totabelaction;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaxswingJOptionPane;

import topdfTableToPdf;

import totabelviewTabelData;

import totabelxlsExcelDemo;

public class TableAction implements ActionListener {

TabelData data;

public TableAction(TabelData data) {

thisdata = data;

}

public void actionPerformed(ActionEvent e) {

String str = egetActionCommand();

if ("添加"equals(str)) {

dataaddData();

} else if ("导出到Excel"equals(str)) {

ExcelDemo demo = new ExcelDemo();

demomethod(data);

} else if ("删除"equals(str)) {

if (datagetRow() != -1) {

datadelRow();

} else {

JOptionPaneshowMessageDialog(null, "请选择要删除的行!");

}

}else if("从Excel导入"equals(str)){

datagetXlsInfo();

}else if("从Excel导入到数据库"equals(str)){

datatoDb();

}else if("从table导出到pdf"equals(str)){

TableToPdf pdf=new TableToPdf();

pdfnewPage(data);

}else if("计算学分"equals(str)){

datagetXlsInfoToCredit();

}

}

}

第三个类:数据库连接

package totabeldb;

import javasqlConnection;

import javasqlDriverManager;

import javasqlResultSet;

import javasqlSQLException;

import javasqlStatement;

public class JdbcConnection {

private static JdbcConnection con;

public static JdbcConnection getCon() {

if (con == null) {

con = new JdbcConnection();

}

return con;

}

public Connection getConnection() {

Connection connection=null;

try {

ClassforName("oraclejdbcOracleDriver");

String url = "jdbc:oracle:thin:@127001:1521:oracle";

String user = "scott";

String password = "tiger";

connection = DriverManagergetConnection(url, user,

password);

} catch (ClassNotFoundException e) {

eprintStackTrace();

} catch (SQLException e) {

eprintStackTrace();

}

return connection;

}

// public static void main(String[] args) {

// JdbcConnection connection=new JdbcConnection();

// connectiongetConnection("asd", "99");

// }

}

第四个类:

package totabelxls;

import javaioFile;

import javaioIOException;

import javautilVector;

import javautilregexMatcher;

import javautilregexPattern;

import javaxswingJOptionPane;

import totabelviewTabelData;

import jxlCell;

import jxlSheet;

import jxlWorkbook;

import jxlreadbiffBiffException;

import jxlwriteLabel;

import jxlwriteWritableSheet;

import jxlwriteWritableWorkbook;

import jxlwriteWriteException;

import jxlwritebiffRowsExceededException;

public class ExcelDemo {

/

@param args

/

private Vector title = new Vector();

private Vector[] array;

// public static void main(String[] args) {

// ExcelDemo demo = new ExcelDemo();

// demogetXlsInfo();

//

// }

public void method(TabelData table) {

int row = tablegetRowSize();

int column = tablegetColumnSize();

WritableWorkbook book = null;

Vector title = tablesetTitle();

Object[] str = titletoArray();

try {

book = WorkbookcreateWorkbook(new File("testxls"));

WritableSheet sheet = bookcreateSheet("成绩表", 0);

for (int i = 0; i < strlength; i++) {

sheetaddCell(new Label(i, 0, (String) str[i]));

}

for (int i = 1; i < row + 1; i++) {

for (int j = 1; j < column + 1; j++) {

sheetaddCell(new Label(j - 1, i, tablegetTableInfo(i - 1,

j - 1)));

}

}

bookwrite();

JOptionPaneshowMessageDialog(null, "导出完成!");

} catch (IOException e) {

eprintStackTrace();

} catch (RowsExceededException e) {

eprintStackTrace();

} catch (WriteException e) {

eprintStackTrace();

} finally {

try {

bookclose();

} catch (WriteException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

}

}

/

输出Excel的数据到表单

@return

/

public Vector getXlsInfo() {

Vector v = new Vector();

jxlWorkbook rwb = null;

int index = 0;

try {

rwb = jxlWorkbookgetWorkbook(new File("testxls"));

Sheet[] sheet = rwbgetSheets();

for (int i = 0; i < sheetlength; i++) {

int rs = sheet[i]getRows();

array = new Vector[rs - 1];

for (int j = 1; j < rs; j++) {

Cell[] cell = sheet[i]getRow(j);

Vector info = new Vector();

for (int k = 0; k < celllength; k++) {

infoadd(cell[k]getContents());

}

array[index] = info;

index++;

vadd(info);

}

Cell[] titleCell = sheet[i]getRow(0);

for (int j = 0; j < titleCelllength; j++) {

titleadd(titleCell[j]getContents());

}

}

} catch (BiffException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

} finally {

rwbclose();

}

return v;

}

public Vector getXlsInfoToCredit() {

Vector v = new Vector();

jxlWorkbook rwb = null;

try {

rwb = jxlWorkbookgetWorkbook(new File("d:/test/信科0821(南迁)xls"));

Sheet[] sheet = rwbgetSheets();

for (int i = 0; i < sheetlength; i++) {

int rs = sheet[i]getRows();

array = new Vector[rs - 1];

for (int j = 1; j < rs; j++) {

Cell[] cell = sheet[i]getRow(j);

Vector info = new Vector();

for (int k = 0; k < celllength; k++) {

// if(){

Pattern p = Patterncompile("[0-9]{1,}");

Matcher m = pmatcher(cell[k]getContents());

if (mmatches()) {

int score = IntegervalueOf(cell[k]getContents());

float result = getScore(score);

infoadd(result);

} else {

infoadd(cell[k]getContents());

}

}

vadd(info);

}

Cell[] titleCell = sheet[i]getRow(0);

for (int j = 0; j < titleCelllength; j++) {

titleadd(titleCell[j]getContents());

}

}

} catch (BiffException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

} finally {

rwbclose();

}

return v;

}

public float getScore(int n) {

float score = n;

if (n < 60) {

score = 0;

return score;

} else {

if (n >= 60 && n <= 63) {

score = (float) 10;

} else if (n >= 64 && n <= 67) {

score = (float) 13;

} else if (n >= 68 && n <= 71) {

score = (float) 17;

} else if (n >= 72 && n <= 75) {

score = (float) 20;

} else if (n >= 76 && n <= 79) {

score = (float) 23;

} else if (n >= 80 && n <= 83) {

score = (float) 27;

} else if (n >= 84 && n <= 87) {

score = (float) 30;

} else if (n >= 88 && n <= 91) {

score = (float) 33;

} else if (n >= 92 && n <= 95) {

score = (float) 37;

} else if (n >= 96 && n <= 100) {

score = (float) 40;

}

return score;

}

}

public Vector getTitle() {

// getXlsInfo();

return title;

}

public Vector[] getArray() {

getXlsInfo();

return array;

}

}

我的是导出到xls中,基本原理是一样的,希望对楼主有用把

以上就是关于informix中怎么导入表结构全部的内容,包括:informix中怎么导入表结构、informix 千万数据没有索引如何导出、Informix常用命令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9668308.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存