将Excel转换成sql文件,插入数据库
需求:有excel文件,含多个sheet,每个sheet的内容对应插入到一张表,sheet的名称就是对应的表名称。
每一行为列名,例如:
达成:将每个sheet输出成一个以sheet名称命名的sql文件,内容为每行内容的insert语句。
以上图为例会生成三个sql文件,分别是TF_R_TERMINAL_ARCH.sql, TF_R_STOCK_TRADE.sql 和 TF_R_STOCK_TRADE_DETAIL.sql 如下图
下面是程序ExcelToInsert.java
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import jxl.Sheet;
import jxl.Workbook;
public class ExcelToInsert {
public static void main(String[] args) {
String table_name = ""; // 表名
String sqlCell = ""; // 表单元格
String SQL = ""; // 完整的一条SQL插入语句
final String EXL_NAME = "20100419"; // Excel文件名
final String BASE_PATH = "F:/temp/"; // 文件路径
final String IN_EXL_PATH = BASE_PATH + EXL_NAME + ".xls"; // excelPath
FileWriter fw = null;
int rows = 0;
int columns = 0;
try {
try {
Workbook rwb = Workbook.getWorkbook(new File(IN_EXL_PATH));
Sheet rs[] = rwb.getSheets();
// 遍历sheet
for (int i = 0; i < rs.length; i++) {
table_name = rwb.getSheetNames()[i]; // 表名取sheetName
fw = new FileWriter(BASE_PATH + table_name + ".sql");
String preSql = "INSERT INTO TABLE "; // insert语句的前半部份
preSql += table_name + "(";
rows = rs[i].getRows();
columns = rs[i].getColumns();
// 遍历行
for (int j = 0; j < rows; j++) {
String sufSql = " VALUES( ";
if (j == 0) {// 第一行,用于取列名,造insert语句前半部份,这部份对于同一张表是相同的
for (int g = 0; g < columns - 1; g++) {
sqlCell = rs[i].getCell(g, 0).getContents().trim();
preSql += sqlCell + ",";
}
// insert语句前半部份生成
preSql += rs[i].getCell(columns - 1, 0).getContents().trim()+ ") ";
}
// 其它行,取具体insert的内容,既insert语句的后半部份
else {
for (int g = 0; g < columns - 1; g++) {
sqlCell = rs[i].ge
相关文档:
下载解压了Oracle SQL Developer工具,运行时,启动不了,报错信息如下:
---------------------------
Unable to create an instance of the Java Virtual Machine
Located at path:
<SQLDEVELOPER>\jdk\jre\bin\client\jvm.dll
---------------------------
是JVM参数设置的问题,我的解决方案如下:
<SQ ......
我觉得主要应该从5个方面进行调整:
1.去掉不必要的大型表的全表扫描
2.缓存小型表的全表扫描
3.检验优化索引的使用
4.检验优化的连接技术
5.尽可能减少执行计划的Cost
现在简单的举几个例子
Where子句中有“!=”将不使用索引
select account_name from test where amount != 0 (不使用)
......
由于网站是别人的
sql server 2000 不能导入2005 的数据库文件 我只好按照书上重新建立的数据库文件
然后在visual studio 2005中一个一个的复制存储过程到sql server 2000
这样就不用下载 sql server 2005 了
如果有sql server 2005 的话之际生成 脚本就一致性导入就ok了 ......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Configuration;
using System.Data.SqlClient;
namespace WebApplication1
{
public class Message
{
public static IL ......
exists (sql 返回结果集为真)
not exists (sql 不返回结果集为真)
如下:
表A
ID NAME
1 A1
2 A2
3 A3
表B
ID AID NAME
1 1 B1
2 2 B2
3 2 B3
表A和表B是1对多的关系 A.ID => B.AID
......