精华内容
下载资源
问答
  • SQL文件导入并执行前端代码Java代码RunSqlMapper.javaRunSqlMapper.xmlController文件ServiceImpl文件 前端代码 略,比较简单的文件上传,这里就不写了 Java代码 由于要结合Mybatis使用所以就需要创建Mapper文件了 ...

    前端代码

    略,比较简单的文件上传,这里就不写了

    Java代码

    由于要结合Mybatis使用所以就需要创建Mapper文件了

    RunSqlMapper.java

    和你的其他Mapper文件放一起就行了,要被扫描到

    public interface RunSqlMapper extends BaseMapper<T> {
    	//执行sql语句
        public void runSqlBySqlStr(String sqlStr);
    }
    
    RunSqlMapper.xml

    我这里执行的sql语句是新增语句,如果是查询语句的话情况略微不同,需要加上resultMap返回查询的格式

    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="RunSqlMapper的位置">
    	//执行sql语句
    	<select id="runSqlBySqlStr" parameterType="java.lang.String">
    		<![CDATA[${sqlStr}]]>
    	</select>
    </mapper>
    
    Controller文件
    	 /**
    	  * 导入sql数据
    	  *
    	  * @param request
    	  * @param response
    	  * @return
    	  */
    	 @RequestMapping(value = "/importSql", method = RequestMethod.POST)
    	 public Result<?> importSql(HttpServletRequest request, HttpServletResponse response) {
    		 return 调用service的方法(request, response);
    	 }
    
    ServiceImpl文件
    	@Resource
        private RunSqlMapper runSqlMapper;
        
       /**
         * 导入sql文件
         *
         * @param request
         * @param response
         * @return
         */
        protected Result<?> importSql(HttpServletRequest request, HttpServletResponse response) {
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
            for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
                MultipartFile file = entity.getValue();// 获取上传文件对象
                List<String> sqlList = new ArrayList<String>();
                InputStream sqlFileIn = null;
                try {
                    sqlFileIn = file.getInputStream();
                    int available = sqlFileIn.available();
                    if (available == 0){
                        throw new RuntimeException("文件内容为空,请检查后再进行导入");
                    }
                    StringBuffer sqlSb = new StringBuffer();
                    byte[] buff = new byte[1024];
                    int byteRead = 0;
                    while ((byteRead = sqlFileIn.read(buff)) != -1) {
                        sqlSb.append(new String(buff, 0, byteRead));
                    }
                    // Windows 下换行是 \r\n, Linux 下是 \n
                    String[] sqlArr = sqlSb.toString()
                            .split("(;\\s*\\r\\n)|(;\\s*\\n)");
                    for (int i = 0; i < sqlArr.length; i++) {
                        String sql = sqlArr[i].replaceAll("--.*", "").trim();
                        if (!sql.equals("")) {
                            sqlList.add(sql);
                        }
                    }
                    for (String sql:sqlList){
                        Boolean b = sql != null && (sql.contains("insert") || sql.contains("INSERT"));
                        if (b){
                            runSqlMapper.runSqlBySqlStr(sql);
                        }else {
                            throw new JeecgBootException(sql + " sql语句错误");
                        }
                    }
                    return Result.ok("文件导入成功!数据行数:" + sqlList.size());
                } catch (Exception e) {
                    log.error(e.getMessage(), e);
                    return Result.error("文件导入失败:" + e.getMessage());
                } finally {
                    try {
                        sqlFileIn.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return Result.error("文件导入失败!");
        }
    
    展开全文
  • 最近在做一个CMS系统,不免会在CMS安装阶段会有一个Install database阶段,需要用到安装数据库,之前已经用mysqldunp命令到处一个sql格式的文件,现在需要将它导入数据库。由于java里没有直接针对于数据库的文件操作...

    最近在做一个CMS系统,不免会在CMS安装阶段会有一个Install database阶段,需要用到安装数据库,之前已经用mysqldunp命令到处一个sql格式的文件,现在需要将它导入数据库。由于java里没有直接针对于数据库的文件操作。只能考虑其他办法:这里是采用读取文件拼接成字符串,并批量处理(addBatch)的方式:代码如下:

    private static File file = new File("E:\\data\\tulufan.sql");

    private static InputStreamReader fileReader;

    static {

    try {

    if (!file.exists()) {

    file.createNewFile();

    }

    fileReader = new InputStreamReader(new FileInputStream(file),

    "UTF-8");

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    public void readSQLFile() {

    BufferedReader bufferedReader = new BufferedReader(fileReader);

    try {

    StringBuilder sBuilder = new StringBuilder("");

    String str = bufferedReader.readLine();

    while (str != null) {

    // 去掉一些注释,和一些没用的字符

    if (!str.startsWith("#") && !str.startsWith("/*")

    && !str.startsWith("–") && !str.startsWith("\n"))

    sBuilder.append(str);

    str = bufferedReader.readLine();

    }

    String[] strArr = sBuilder.toString().split(";");

    List strList = new ArrayList();

    for (String s : strArr) {

    strList.add(s);

    System.out.println(s);

    }

    // 创建数据连接对象,下面的DBConnection是我的一个JDBC类

    DBConnection db = new DBConnection();

    db.executeBatchByStatement(strList);

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    try {

    bufferedReader.close();

    fileReader.close();

    } catch (Exception e) {

    }

    }

    return true;

    }/*******************************

    ** DBConnection类中批量处理方法

    */

    public boolean executeBatchByStatement(List sqlList) {

    boolean ret = false;

    if (conn != null) {

    Statement stmt = null;

    try {

    conn.setAutoCommit(false);

    stmt = conn.createStatement();

    for (String s : sqlList) {

    stmt.addBatch(s);

    }

    stmt.executeBatch();

    conn.commit();

    ret = true;

    } catch (BatchUpdateException e) {

    e.printStackTrace();

    try {

    conn.rollback();

    } catch (SQLException e1) {

    e1.printStackTrace();

    }

    } catch (SQLException e) {

    e.printStackTrace();

    } finally {

    try {

    conn.setAutoCommit(true);

    if (stmt != null) {

    stmt.close();

    stmt = null;

    }

    } catch (SQLException e) {

    e.printStackTrace();

    }

    }

    }

    return ret;

    }

    当然,这只是我个人想出来的一个办法,愚陋之见还望大家批评指教,共同提高啊。。。代码有什么问题的可以QQ我,共同商讨啊。。

    展开全文
  • sql文件导入大字段,大字段超过4000则报错文本超过长度,import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.io.InputStreamReader;import ...

    sql文件导入大字段,大字段超过4000则报错文本超过长度,

    import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.io.StringReader;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.PreparedStatement;

    import java.sql.SQLException;

    import java.util.ArrayList;

    import java.util.List;

    import oracle.jdbc.OracleDriver;

    public class ClobTest {

    String url = "jdbc:oracle:thin:@192.168.1.102:1521:orcl";

    String user = "YNZJ";

    String pwd = "YNZJ";

    //String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";

    //String user = "hczz";

    //String pwd = "hczz";

    private void clobImport(List list) throws SQLException {

    DriverManager.registerDriver(new OracleDriver());

    Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象

    PreparedStatement stmt = null;

    for (String sql : list) {

    String content = "";

    try {

    sql = sql.trim();

    int num = sql.lastIndexOf("', '");

    content = sql.substring(num + 4, sql.length() - 3);

    sql = sql.substring(0, num) + "', ?)";

    sql = sql.replace("\"YNZJ\".\"ENET_WORKBOOK\"", "ENET_WORKBOOK_bak");

    stmt = conn.prepareStatement(sql);// 加载SQL语句

    stmt.setCharacterStream(1, new StringReader(content), content.length());

    stmt.executeUpdate();

    } catch (Exception e) {

    System.out.println(e.getMessage());

    System.out.println(content);

    System.out.println(sql);

    }

    }

    stmt.close();

    conn.close();

    }

    private List duqu(String path) throws Exception {

    String code = resolveCode(path);

    File file = new File(path);

    InputStream is = new FileInputStream(file);

    InputStreamReader isr = new InputStreamReader(is, code);

    BufferedReader bufferedReader = new BufferedReader(isr);

    List strings = new ArrayList();

    String str = null;

    String sql_d = "";

    int num = 0;

    int ks = 0;

    int dz = 200;

    int jz = ks + dz;

    while ((str = bufferedReader.readLine()) != null) {

    sql_d = sql_d + str;

    if (str.endsWith("');") && sql_d != "") {

    if (num >= ks) {

    strings.add(sql_d);

    }

    sql_d = "";

    num++;

    }

    if (num == jz) {

    break;

    }

    }

    System.out.println(strings.size());

    return strings;

    }

    private String resolveCode(String path) throws Exception {

    InputStream inputStream = new FileInputStream(path);

    byte[] head = new byte[3];

    inputStream.read(head);

    String code = "gb2312"; // 或GBK

    if (head[0] == -1 && head[1] == -2)

    code = "UTF-16";

    else if (head[0] == -2 && head[1] == -1)

    code = "Unicode";

    else if (head[0] == -17 && head[1] == -69 && head[2] == -65)

    code = "UTF-8";

    inputStream.close();

    return code;

    }

    public static void main(String[] args) throws Exception {

    ClobTest a = new ClobTest();

    String path = "D:\\WORD_BOOK超长字段错误数据(1).txt";

    a.clobImport(a.duqu(path));

    }

    }

    展开全文
  • Java执行SQL脚本导入

    2021-02-12 17:33:19
    今天做了一个用java导入sql脚本的功能,前台上传一个sql文件,后台先保存本地,然后进行导入。主要代码如下:Stringcmd="cmd/csqlplususr/pwd@{//服务器IP:1521/}sid@d:\\1.sql>d:\\t.log";Processp=null;try{p=...

    今天做了一个用java导入sql脚本的功能,前台上传一个sql文件,后台先保存本地,然后进行导入。主要代码如下:String cmd = "cmd /c sqlplus usr/pwd@{//服务器IP:1521/}sid @d:\\1.sql>d:\\t.log";

    Process p = null;

    try {

    p = Runtime.getRuntime().exec(cmd);

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    if (p != null) {

    try {

    p.waitFor();

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    p.destroy();

    }

    }

    注:1.sql文件中必须要有/

    2.如果没有在sql最后一行加入exit则,执行完后,process实例仍然出于等待中,具体可以自行尝试cmd中执行。如需sql执行完程序关闭则最后一行加入exit。

    3.上面的服务器IP和端口号是可选的,如果你已经配置了Net manager,则直接引用配置的sid就行了。

    展开全文
  • java实现导出导入mysql数据库的sql文件代码中省略mysql数据库配置文件信息,要知道实际项目开发中这个代码习惯不可取哦。本文只针对简单测试,故省略配置文件,直接写死配置信息。package com.fun.test;public class...
  • java mysql 导入sql文件

    2021-12-07 22:05:15
    试了好多命令行操作,目前只有这一种好用,其他的好像都不太行,理论上是可以的,不知道问题出在哪里 public static boolean importDatabase() { // File saveFile = new File(mysqlExportPath);...
  • java代码中用JDBC导入sql脚本关注:120答案:2mip版解决时间 2021-02-02 21:43提问者祇為焄菂兲哋閤2021-02-02 09:55我有一个Temp.sql脚本文件java的中用JDBC导入sql脚本,我用Statement.execute("source d:okercn....
  • // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免 writer.flush(); // 别忘记关闭输入输出流 out.close(); br.close(); writer.close(); if(child.waitfor()==0){ System.out....
  • 1 @IocBean2 public classSqlCommandModel{34 //用户名5 @Inject("java:$conf.get('jdbc.username')")6 privateString username;7 //用户密码8 @Inject("java:$conf.get('jdbc.password')")9 priva...
  • 于是在下经过各种尝试终于实现了使用java代码实现导入导出的功能,希望能够遇到这种需求的开发人员一点帮助。talk is cheap,show you the code!导入功能:直接使用jdbctemplate执行以下语句s...
  • java执行SQL脚本文件

    2021-02-28 11:36:02
    }/*** SQL脚本分解执行 *@paramresource SQL脚本资源 *@parambatchNumber 每多少条SQL执行一次 *@throwsSQLException *@throwsIOException*/ public void batchExecuteSql(Resource resource, int batchNumber) ...
  • Navicat Premium如何导入SQL文件

    千次阅读 2020-12-31 10:14:44
    看了一些小伙伴写的不够详细,或者有的版本...2.在需要导入的数据库上右键,选择"运行sql文件…",然后在弹出的窗口选择你的sql 文件 3.3 3.选择对应的sql文件后 ,点击开始 4.最后运行完毕没有报错 点击关闭 即可 ...
  • Java 导入导出txt文件

    2021-02-26 18:57:14
    Java 导入导出txt文件。Oracle数据库导出成txt格式方法,如何将数据库表单信息生成txt文件。daoJava代码 收藏代码/*** 获得所有数据*/public String getAllWord() {Session session=super.getSession();StringBuffer...
  • java.sql导入不起作用

    2021-07-16 21:19:30
    My .getTables and .prepareStatement are not working. I thought I only had to import the java.sql.* for these to work. Please let me know what else I need to do. Thank you for your time. It says "c...
  • mysql导入sql文件过大或连接超时的解决办法 前段时间出差在现场开发的时候,导入数据库老是出问题.最后发现了一个神奇sql语句交给实施,只要导入出错就把如下语句执行就可以了.至今屡试不爽. 1 2 3 4 5 6 7 set ...
  • 最近在做系统数据初始化,采用sql形式...先来写个方法读取sql文件:/*** 加载解析sql文件* @param sqlFile* @return* @throws Exception*/private static List loadSql(String sqlFile) throws Exception {List sql...
  • 我已经在import.sql中准备数据了.我已经在application.properties中设置了spring.jpa.hibernate.ddl-auto = create-drop.但是,为什么我会收到以下错误?我可以手动插入它.2015-11-20 20:53:57.242 ERROR 7092 --- ...
  • SQL文件夹的操作 有时候从git上面下载下来的仓库,也就是我们的程序运行起来没有什么问题,但是就是数据库建立对应有点麻烦。那该怎么办呢? 其实一般情况下,git上下载的一些好的项目都有数据库给你,看下图我...
  • 第四天--html简易布局 【转载】 Java线程面试题 Top 50Java线程面试题 Top 50 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员...
  • 批量执行SQL文件

    2021-03-11 14:17:13
    摘要:很多时候我们在做系统升级时需要将大量的.sql文件挨个执行,十分不方便。而且考虑到执行顺序和客服的操作方便性,能不能找到一种简单的方法来批量执行这些sql文件呢?主要内容:准备工作利用osql/ocmd命令批量...
  • 你是不是打算象SQL里面批量插入的方法用一个INSERT语句一次性导入?那还是放弃吧。不是说不能实现,而是这个办法实在没有多大用处,实在是屠龙之技。举个例子吧有A,B两个表(是不是同一个数据库并不重要),要求把A表...
  • java执行sql脚本

    2021-01-27 02:05:31
    Java 程序中,运行 sql文件总结:两种思路:第一种思路:读取脚本文件,分解成 sql 语句,然后在程序中执行批处理。第二种思路:利用 Ant 的SQL Task来实现执行SQL 脚本的功能。第一种思路的麻烦之处在于,如何将...
  • 方案一:修改Mysql配置默认情况下,MySQL的最大允许包(max_allowed_packet)是1048576B(1MB)当向mysql导入sql脚本文件超过1MB时,此时导入就会出现问题。通过修改MySQL的my.ini配置文件,在my.ini文件中任意位置...
  • 通过Java实现批量导入数据到SQLServer数据库技术实现:前台用的框架是Easyui+Bootstrap结合使用,需要小伙伴自己引入相应的Js、Css文件。页面:Jsp、拦截请求:Servlet、逻辑处理:ClassBean、数据库:SQL server。...
  • 导入项目java文件报错

    2021-03-24 13:13:47
    导入项目java文件报错[2021-02-06 17:37:39]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。...
  • package importMysql;import java.io.*;...public class importTry {/*** @param args* 本程序涉及文件IO,字符串分隔StringTokenizer,JDBC,数据库sql语句*/public static void main(String[] args)...
  • 作者在工作中,正好要用到了这些,就手头的一个程序进行整理,其功能很简单,用Java语言从access数据库中,把一些数据导入SQL数据库中。 原Access数据库表结构: 表:production产品型号字符串型产品编号零件图号...
  • 在一个工程中数据库往往要分为实际运用数据库和测试数据库,最直接的方法当然是从源数据库中导出.sql文件导入到本地的数据库中,我这的实例是原有一个项目数据库在服务器上现在想导出一份到本地做测试用,工程中用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 145,382
精华内容 58,152
关键字:

java导入sql文件

java 订阅