乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 如何用sql语句把excel中的数据导入指定数据库中

如何用sql语句把excel中的数据导入指定数据库中

作者:乔山办公网日期:

返回目录:excel表格制作


下面是使用Java实现的,将Excel数据表中的数据导入到数据库里里面。


public class ReadExcel {
   /**
    * 对外提供读取excel 的方法
    * */
   public static List<List<Object>> readExcel(File file) throws IOException {
       String fileName = file.getName();
       String extension = fileName.lastIndexOf(".") == -1 ? "" : fileName
               .substring(fileName.lastIndexOf(".") + 1);
       if ("xls".equals(extension)) {
           return read2003Excel(file);
       } else if ("xlsx".equals(extension)) {
           return read2007Excel(file);
       } else {
           throw new IOException("不支持的文件类型");
       }
   }

   /**
    * 读取 office 2003 excel
    *
    * @throws IOException
    * @throws FileNotFoundException
    */
   private static List<List<Object>> read2003Excel(File file)
           throws IOException {
       List<List<Object>> list = new LinkedList<List<Object>>();
       HSSFWorkbook hwb = new HSSFWorkbook(new FileInputStream(file));
       HSSFSheet sheet = hwb.getSheetAt(0);
       Object value = null;
       HSSFRow row = null;
       HSSFCell cell = null;
       int counter = 0;
       for (int i = sheet.getFirstRowNum(); counter < sheet
               .getPhysicalNumberOfRows(); i++) {
           row = sheet.getRow(i);
           if (row == null) {
               continue;
           } else {
               counter++;
           }
           List<Object> linked = new LinkedList<Object>();
           for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
               cell = row.getCell(j);
               if (cell == null) {
                   continue;
               }
               DecimalFormat df = new DecimalFormat("0");// 格式化 number String
                                                           // 字符
               SimpleDateFormat sdf = new SimpleDateFormat(
                       "yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
               DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字
               switch (cell.getCellType()) {
               case XSSFCell.CELL_TYPE_STRING:
               //  System.out.println(i + "行" + j + " 列e799bee5baa6e997aee7ad94e59b9ee7ad94361 is String type");
                   value = cell.getStringCellValue();
                   break;
               case XSSFCell.CELL_TYPE_NUMERIC:
                   /*System.out.println(i + "行" + j
                           + " 列 is Number type ; DateFormt:"
                           + cell.getCellStyle().getDataFormatString());*/
                   if ("@".equals(cell.getCellStyle().getDataFormatString())) {
                       value = df.format(cell.getNumericCellValue());
                   } else if ("General".equals(cell.getCellStyle()
                           .getDataFormatString())) {
                       value = nf.format(cell.getNumericCellValue());
                   } else {
                       value = sdf.format(HSSFDateUtil.getJavaDate(cell
                               .getNumericCellValue()));
                   }
                   break;
               case XSSFCell.CELL_TYPE_BOOLEAN:
               //  System.out.println(i + "行" + j + " 列 is Boolean type");
                   value = cell.getBooleanCellValue();
                   break;
               case XSSFCell.CELL_TYPE_BLANK:
               //  System.out.println(i + "行" + j + " 列 is Blank type");
                   value = "";
                   break;
               default:
               //  System.out.println(i + "行" + j + " 列 is default type");
                   value = cell.toString();
               }
               if (value == null || "".equals(value)) {
                   continue;
               }
               linked.add(value);
           }
           list.add(linked);
       }
       return list;
   }

   /**
    * 读取Office 2007 excel
    * */
   private static List<List<Object>> read2007Excel(File file)
           throws IOException {
       List<List<Object>> list = new LinkedList<List<Object>>();
       // 构造 XSSFWorkbook 对象,strPath 传入文件路径
       XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file));
       // 读取第一章表格内容
       XSSFSheet sheet = xwb.getSheetAt(0);
       Object value = null;
       XSSFRow row = null;
       XSSFCell cell = null;
       int counter = 0;
       for (int i = sheet.getFirstRowNum(); counter < sheet
               .getPhysicalNumberOfRows(); i++) {
           row = sheet.getRow(i);
           if (row == null) {
               continue;
           } else {
               counter++;
           }
           List<Object> linked = new LinkedList<Object>();
           for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
               cell = row.getCell(j);
               if (cell == null) {
                   continue;
               }
               DecimalFormat df = new DecimalFormat("0");// 格式化 number String
                                                           // 字符
               SimpleDateFormat sdf = new SimpleDateFormat(
                       "yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
               DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字
               switch (cell.getCellType()) {
               case XSSFCell.CELL_TYPE_STRING:
                   System.out.println(i + "行" + j + " 列 is String type");
                   value = cell.getStringCellValue();
                   break;
               case XSSFCell.CELL_TYPE_NUMERIC:
               /*  System.out.println(i + "行" + j
                           + " 列 is Number type ; DateFormt:"
                           + cell.getCellStyle().getDataFormatString());*/
                   if ("@".equals(cell.getCellStyle().getDataFormatString())) {
                       value = df.format(cell.getNumericCellValue());
                   } else if ("General".equals(cell.getCellStyle()
                           .getDataFormatString())) {
                       value = nf.format(cell.getNumericCellValue());
                   } else {
                       value = sdf.format(HSSFDateUtil.getJavaDate(cell
                               .getNumericCellValue()));
                   }
                   break;
               case XSSFCell.CELL_TYPE_BOOLEAN:
           //      System.out.println(i + "行" + j + " 列 is Boolean type");
                   value = cell.getBooleanCellValue();
                   break;
               case XSSFCell.CELL_TYPE_BLANK:
               //  System.out.println(i + "行" + j + " 列 is Blank type");
                   value = "";
                   break;
               default:
               //  System.out.println(i + "行" + j + " 列 is default type");
                   value = cell.toString();
               }
               if (value == null || "".equals(value)) {
                   continue;
               }
               linked.add(value);
           }
           list.add(linked);
       }
       return list;
   }

   public static void main(String[] args) {
       try {
           readExcel(new File("D:\\Java\\apache-tomcat-8.0.26\\webapps\\poi\\docs\\testRead.xls"));
           // readExcel(new File("D:\\test.xls"));
           /*
               String docsPath = request.getSession(true).getServletContext()
                       .getRealPath("docs");
               String fileName = "testRead.xls";
               String filePath = docsPath;
               if (EPlatform.Windows.equals(OSinfo.getOSname())) {
                   filePath = filePath + "\\" + fileName;
               } else {
                   filePath = filePath + "/" + fileName;
               }
               filePath = "E:\\testRead.xls";
               List<List<Object>> list = readExcel(new File(filePath));
               request.setAttribute("list", list);
               RequestDispatcher dispatcher = request
                       .getRequestDispatcher("/read.jsp");
               dispatcher.forward(request, response);
            */
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
}



SQL SERVER 和EXCEL的数据导入导出
  e68a84e79fa5e981933391、在SQL SERVER里查询Excel数据:
  ======================================================
  SELECT *
  FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
  下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
  SELECT *
  FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
  
  2、将Excel的数据导入SQL server :
  ======================================================
  SELECT * into newtable
  FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
  实例:
  SELECT * into newtable
  FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
  
  3、将SQL SERVER中查询到的数据导成一个Excel文件
  ======================================================
  T-SQL代码:
  EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
  参数:S 是SQL服务器名;U是用户;P是密码
  说明:还可以导出文本文件等多种格式
  实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
  EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
  在VB6中应用ADO导出EXCEL文件代码:
  Dim cn As New ADODB.Connection
  cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
  cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
  
  4、在SQL SERVER里往Excel插入数据:
  ======================================================
  insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)
  T-SQL代码:
  INSERT INTO
  OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
  'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]
  (bestand, produkt) VALUES (20, 'Test')
  
  总结:利用以上语句,我们可以方便地将SQL SERVER、ACCESS和EXCEL电子表格软件中的数据进行转换,为我们提供了极大方便!
附加数据库 或者导入数据库

SQL本身有数据导入的操作。但如果要从一个备份的文件中导入数据,则要进行另外的操作。下面以一个例子进行说明。

SQL服务器上已有一个DOE数据库,并且里面有大量的数据,现准备从另外一个备份文件A1.BAK(不是DOE数据库的备份文件)中导入另外的数据(即导入后在DOE中增加一些数据表,表中已录有数据),并保持原DOE的数据不变。

1、首先,在“SQL企业管理器”中新建一个临时数据库A1。
2、右击A1数据库,选择e79fa5e98193e4b893e5b19e333:所有任务->还原数据库。
3、在“还原数据库”窗口中,选择:“从设备”。
4、点击“选择设备”。
5、点击“添加”。
6、从文件名中选择要还原的数据库文件,如A1.BAK。
7、点击“确定”,返回“还原数据库”窗口。
8、点击“选项”卡,进入选项设置。
9、钩选:“在现有数据库上强制还原”。
10、修改“移到物理文件名”为:“c:\a1.ldf”、“c:\a1.mdf”。
11、点确定,即可导入备份文件中的数据到临时数据库A1中。

12、此时,你可以将数据从A1导入到另外一真正要导入的数据库中,如DOE数据库。

(下面的数据导入操作为SQL2000企业管理器的一般数据导入导出操作。)

13、在“SQL企业管理器”中选择“DOE”数据库。
14、右击DOE数据库,选择:所有任务->导入数据。
15、在“DTS导入/导出向导”窗口的“选择数据源”中,数据源选择刚才建立并导入数据的临时数据库A1。点击下一步。
16、在“选择目的”中,系统已经默认为DOE数据库。
17、连续点击“下一步”,直到完成。

经过上面的操作,你已经成功地将备份文件A1.BAK中数据导入DOE数据库中,并且DOE数据库原有数据不变。

此时,你可以删除临时数据库A1。

-------------------------------------------------------------
1.打开SQLCC

2.连接数据库

3.连接表"ragnarok"(没有的可以新建一个)

4.选择表按CTRL+Q

5.点左侧的"打开"按扭(图标为一个文件夹)导入SQL文件

6.删除深红色的部分(注意要全部删除,不然导入过程可能会出错)

7.修改开头的数据库为"ragnarok",结尾修改数据库的用户名和密码

8.按右侧的"导入"按扭(图标为一个感叹号)开始导入

9.导入完毕后关闭窗口

10.重新连接数据库,即可看到"ragnarok"里的数据表了

网页链接

然后再使用Worksheets(2).Range("A1").CopyFromRecordset rs

把rs换成recordset对象

相关阅读

  • 使用<em>EXCEL</em>将数据<em>导入SQL</em>SER

  • 乔山办公网excel表格制作
  • SQLSERVER中,导入导出数据,我试验过了,EXCEL表中,第一行的字段zhidao名要和表字段名对应专,顺序也对应。原表中,字符类型的字段,在EXCEL只按几下空格就行,不用加引号,导进去就
  • C#<em>asp.net</em> 将客户端的<em>Excel</em&g

  • 乔山办公网excel表格制作
  • 比较简单,这个要zhidao用到微软的分布式查询,可以参考我之回前写的: 《Excel导入SQL SERVER》 http://hi.baidu.com/44498/blog/item/404e364307380c1a72f05d3d.html 但是你要注意,先上传到服务器之后才能
  • -asp.net excel导入sql,excel导入到sql

  • 乔山办公网excel表格制作
  • 不管你是那e799bee5baa6e79fa5e98193e58685e5aeb9364个数据库,将Excel里面的数据导入到数据库中的原理就是将Excel里面的数据存储到一个dataTable中,然后将数据一行一行添加到数据库的表里。Sql
  • <em>Delphi</em>中如何将<em>excel</em>中的数

  • 乔山办公网excel表格制作
  • a和b的字段类型是不是有Double类型?请检查Excel中是不是出现了除数字外的其他字符所以导致你插入数据库时会出现错误提示(string类型不能转换成double类型)delphi中怎么实现EXCEL导入导出到
关键词不能为空

ppt怎么做_excel表格制作_office365_word文档_365办公网