精华内容
下载资源
问答
  • 已打开的excel:excelserver.activesheet txt文件路径:ls_pfiletxt 是从excel指定的行开始导数据 比如从:excel:excelserver.activesheet.range("A4")开始 请教高手啊。。
  • 我用叉叉助手写的脚本打包成xsp文件以后,就代码删了,现在想要修改下这个脚本,请问怎么才能吧xsp文件导入到叉叉助手,我试过很多编辑器,打开都是乱码的
  • 首先在本地oracle中新建了一个用户,新建了一套和那个mysql上一样结构的数据表,然后组织数据旧数据插入新表中。接下来就是本地oracle上的数据,导mysql上去。 导出成sql脚本,好几G的脚本,而且两个数据库...

         由于公司想换用广告投放系统,要测试下新系统的性能,可是公司以前的系统采用的是oracle,新的系统是mysql,表结构也不太相同。首先在本地oracle中新建了一个用户,新建了一套和那个mysql上一样结构的数据表,然后组织数据把旧数据插入到新表中。接下来就是把本地oracle上的数据导到mysql上去。

         导出成sql脚本,好几G的脚本,而且两个数据库不再一个网段上,执行起来很慢。导成文件数据库又不一致。在没有想到好的导出导入办法的情况下,选择了采用程序实现,下面是我的全部代码:

     

    public class DumpData {

     

    public static void main(String[] args) {

      Connection con  = null;
      Connection conn  = null;
      
      PreparedStatement pst = null;
      Statement sql_statement = null;
      
      try {
       
       Long startTime = System.currentTimeMillis();
       SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");  
       TimeZone t = sdf.getTimeZone();  
       t.setRawOffset(0);  
       sdf.setTimeZone(t); 
       
       Class.forName("oracle.jdbc.driver.OracleDriver");
       String url = "jdbc:oracle:thin:@219.239.**.***:1521:ITCPN";
       conn = DriverManager.getConnection(url, "***", "***");
       if(conn != null) System.out.println("oracle连接成功");
       
       
       Class.forName("org.gjt.mm.mysql.Driver");
       System.out.println("Success loading Mysql Driver!");
       con = DriverManager.getConnection("jdbc:mysql://219.239.**.***:3306/***?&useUnicode=true&characterEncoding=gb2312&rewriteBatchedStatements=true","****","*****");
       if(con != null) System.out.println("mysql连接成功");
       con.setAutoCommit(false);
       
       sql_statement =  conn.createStatement();
       String countSql = "select /*+ parallel(t,4)*/count(1) from /"Solution/"";
       ResultSet res = sql_statement.executeQuery(countSql);
          int count = 0;
       while (res.next()){
        count = res.getInt(1);
       }
       res.close();
       int loop = count / 100000;
       
       StringBuffer insertSql = new StringBuffer("insert into Solution values(?");
       for (int i = 0;i<38;i++){
          insertSql.append(",?");
       }
       insertSql.append(")");
          pst = (PreparedStatement) con.prepareStatement(insertSql.toString());  
          System.out.println(insertSql.toString());
         
       for (int n = 0; n <= loop; n++){
         String query = "select id,account, memo,channeltype,channelid, bannergroupid,bannerid,configid," +
          "enable,gid,priority,percent,aid, method,type,startday,starttime,quitday,quittime,campaignid," +
          "fixedchannelid,nopaying, optflag,keyword,keywordflag,keywordtext,keywordencoding,reserveflag," +
          "forecastflag,estimatemediaexpense,castingtype,count,crm_priority,crm_limitnum,crm_limitdate,deleteflag,solutiontypeid,price,achievedflag"+ "  from (select id,account, memo,channeltype,channelid, bannergroupid,bannerid,configid," +
          "enable,gid,priority,percent,aid, method,type,startday,starttime,quitday,quittime,campaignid," +
          "fixedchannelid,nopaying, optflag,keyword,keywordflag,keywordtext,keywordencoding,reserveflag," +
          "forecastflag,estimatemediaexpense,castingtype,count,crm_priority,crm_limitnum,crm_limitdate,deleteflag,solutiontypeid," +"price,achievedflag,rownum rn from /"Solution/" where rownum <="+(n+1)*100000+" ) where rn >"+n*100000;    

       System.out.println(query);
        ResultSet result = sql_statement.executeQuery(query);

       result.setFetchSize(1000);

        
        Long endTime1 = System.currentTimeMillis();  
        System.out.println("完成全部数据查询,用时:" + sdf.format(new Date(endTime1 - startTime)));
       
           while(result.next()){
            for(int i = 1; i < 40;i++){
              pst.setObject(i, result.getObject(i));
            }
            pst.addBatch(); 
            if (result.getRow()%10000==0){
               System.out.println("插入10000条数据!");
                pst.executeBatch();
                pst.clearBatch();
            }
           }
           pst.executeBatch();
           pst.clearBatch();
           con.commit();  
                 System.out.println("插入了10万条记录!");
                 result.close();
                 System.gc();

       }
       
       Long endTime = System.currentTimeMillis();  
       System.out.println("完成全部数据插入,用时:" + sdf.format(new Date(endTime - startTime)));
            
      } catch (ClassNotFoundException e) {
       e.printStackTrace();
      } catch (SQLException e) {
       e.printStackTrace();
      }catch(Exception e){
       e.printStackTrace();
      }
      finally{
       try {
        if (sql_statement != null) sql_statement.close();
        if(pst != null) pst.close();
        if (con != null &&!con.isClosed()){
         con.setAutoCommit(true);
         con.close();
        }
        if (con != null && !conn.isClosed()){
         conn.close();
        }
       } catch (SQLException e) {
        e.printStackTrace();
       }
       
      }
     }
    }

     

         采用了addBatch() 插入的方式, 调用addBatch()是攒sql语句的过程,几乎是不费时的,调用executeBatch ()比较耗时,不过如果攒的语句太多,会导致 mysql 崩溃,我这里设置了比较适中的10000。

         考虑到性能连接时候,添加了rewriteBatchedStatements 参数,默认为false, 需要手工设置为true。rewriteBatchedStatements=false时,执行路径会跳到 executeBatchSerially,此方法内部将语句一条条发送,与非batch处理简直一样,所以慢,就在这里了。 当设为 true时,会执行executeBatchedInserts方法,事实上mysql支持这样的插入语句

    Sql代码 insert into t_user(id,uname) values(1, '1'), (2,'2'), (3, '3') .... 参考http://www.javaeye.com/topic/770032?page=3

     mysql驱动采用的是mysql-connector-java-5.1.14-bin.jar.     

           后面还对查询数据库记录策略进行了优化,/*+ parallel(t,4)*/开启了数据库并行处理,一般只有对表或索引进行全部访问时才可以使用并行,并且数据量达到数百万级别。加大fetch_size,这样可以减少结果数据传输的交互次数及服务器数据准备时间,提高性能。建议不要超过1000,太大了也没什么性能提高了,反而可能会增加内存溢出的危险。 还有就是查询语句的sql的优化,一次查询100000条记录并且采用嵌套的方式,也提供了查询速度。经过优化后运行速度还可以有一个很好的提高,在内网pc上运行,开始20万条数据30多秒搞定,放到外网服务器上运行估计还能提高一倍。最后放到外网服务器上用了五十多分钟就导完了4000万条记录。听说还有一种数据棒的方式导数据,大家有兴趣可以研究下。

    展开全文
  • 在网上找了很多方法,都是要安装SQL server 2005 导入备份文件,再通过脚本导出数据SQL 2000, 但是有一个最大的问题就是,安装SQL server 2005 花的时间太长了,我上次安装的时候,足足花了几个小时才安装好。...
    问:
    
    我现在只有SQL2005的备份文件,电脑上有SQL2000没有SQL2005,我改怎么做?
    答:
    在网上找了很多方法,都是要安装SQL server 2005 导入备份文件,再通过脚本导出数据到SQL 2000, 但是有一个最大的问题就是,安装SQL server 2005 花的时间太长了,我上次安装的时候,足足花了几个小时才安装好。这下舒服了,刚刚才把SQL 2005删除了,现在又得重新安装了。于是我在网上找个SQL 2005绿色版,精减版一无所获,后来发现Microsoft SQL Server 2005 Express Edition 这个可以用,而且只有53M,下载文件和安装都比较快,下载地址在这里:官方下载Microsoft SQL Server 2005 Express Edition ,这个版本其实就是SQL 2005的精减版。
    
      Microsoft SQL Server 2005 Express Edition (SQL Server Express) 是一款强大而可靠的数据管理产品,可以为嵌入式应用程序客户端、轻型 Web 应用程序以及本地数据存储区提供丰富的功能,有利于保护数据,提高性能。SQL Server Express 具有易于部署以及快速设计原型的特点,您可以无偿获取并可以随应用程序自由再分发。SQL Server Express 的设计宗旨是与其他服务器基础结构投资实现无缝集成。
    
      这只是一个服务端工具,还得装一个图形界面的管理工具Microsoft SQL Server Management Studio Express,文件也很小,才39M,跟SQL 2005企业版一张DVD光盘两三G的容量来说,这个真是小巫见大巫咯。下载地址在这里:官方下载Microsoft SQL Server Management Studio Express 。安装完后就可以操作了,这个可以与SQL 2000并存的。
    
      在SQL 2005 Management Studio Express管理工具里,把事先备份的数据库文件还原,在对应的数据库中点击右键然后选择“任务”菜单下的“生成脚本”,在“选项”下面的框中找到“为服务器版本编写脚本”,把后面的SQL Server2005修改成SQL Server 2000,把表,存储过程,视图这些都选中,然后点击“下一步”,再点击“完成”,把生成的SQL保存到文件里。
    
      在SQL Server 2000 里,新建一个数据库,把刚刚生成的SQL脚本文件“查询分析器”里运行,这样对应的表结构,存储过程都有了,这时我们在SQL Server 2000企业管理器“导入数据”,输入SQL Server 2005中服务器的名称或者IP地址,连接到SQL Server 2005,导入数据就OK了。
     
     
    具体操作步骤:

    将sql2005的数据库导入到sql2000的方法

    现在大部分人用windows 2003做 服务器,用sql2005做 数据库,但是还又一部分人用的是sql2000,sql数据库向下兼容但不向上兼容,所以sql2005导出的数据无法导入sql2000。

    下面介绍一个方法

    1.设置sql2005的数据库兼容级别
    --右键数据的属性中选项设置兼容级别为 Sql Server 2000(80)即可。
    2. 生成for 2000版本的数据库脚本
    2005 的manger studio
    -- 打开"对象 资源管理器"(没有的话按 f8), 连接到你的实例
    -- 右键要转到2000的库
    -- 任务
    -- 生成脚本
    -- 在"脚本向导"的"选择数据库" 中, 确定选择的是要转到2000的库
    -- 勾选"为所选数据库中的所有对象编写脚本"
    -- 在接下来的"选择脚本选项"中, 找到"为服务器版本编写脚本"项, 选择"sql server
    2000"
    -- 其他选项根据需要设置
    -- 最后把脚本保存到一个 .sql 脚本文件
    3. 在2000中创建目标数据库
    在查询分析器(或2005的manger studio在打开脚本文件), 连接到sql server 2000,执行上面生成的脚本.以创建一个新的数据库
    4. 将数据从2005导到2000
    2005 的 manger studio
    -- 打开"对象资源管理器"(没有的话按f8), 连接到你的实例
    -- 右键要转到2000的库
    -- 任务
    -- 导出数据
    -- 在"sql server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库
    -- 在" 选择目标"步骤中, 连接到 2000, 并选择步骤3新建的库
    -- 在"选择源表和源视图"中, 选择所有的表
    -- 最后完成


    展开全文
  • 下面介绍一种方法可以支持超大sql脚本导入:那就是通过本地服务器脚步导入到远处RDS数据库(本人实测,导入4.8G的sql脚本文件)。 步骤 : 1 登录可以通过内网访问RDS的云服务器ECS。 当然也可以通过本地Linux...

    阿里云RDS导入功能只支持最大为100M的脚步导入,如果sql脚步超过这个大小怎么导入呢?下面介绍一种方法可以支持超大sql脚本导入:那就是通过本地服务器把脚步导入到远处RDS数据库(本人实测,导入4.8G的sql脚本文件)。

    步骤 :

    1 登录可以通过内网访问RDS的云服务器ECS,并将sql脚本文件通过ftp上传到root目录下。

    当然也可以通过本地Linux服务器,此处推荐阿里云ECS是因为内网可以访问,阿里内网为千兆带宽,上传或导入脚本速度比较快。

    2 安装mysql,如:

    apt-get install mysql-client-5.6

    3 连接远程服务器,输入密码登录,如下命令:

    mysql -h hostu userName -p dbName

    host:RDS访问路径,userName:数据库访问用户名 ,dbName:需要导入sql脚本的数据库名称

    具体参考如下显示:

    mysql -h host u userName -p dbName
    Enter password: 
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 235196939
    Server version: 5.6.29 Source distribution
    
    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> 
    4 导入sql脚本

    mysql> sorce /root/test.sql
    
    

    
    

    
    
    展开全文
  • 最近做的工作涉及到excel数据导入到mysql数据库中, 看来一些mysqlimport, phpmyadmin命令, 但是不怎么会用. 就决定自己写脚本解决. 先excel数据文件保存成csv格式的文件, 然后写了下面的简单perl脚本倒入...

    最近做的工作涉及到把excel数据导入到mysql数据库中, 看来一些mysqlimport, phpmyadmin命令, 但是不怎么会用. 就决定自己写脚本解决.

    先把excel数据文件保存成csv格式的文件, 然后写了下面的简单perl脚本倒入mysql数据库中.

    需要注意用你的mysql数据库表的结构替换掉. 运行脚本并且把csv格式的文件做为参数即可.

    #!/usr/bin/perl 

    # perl program: insert_mysql_data.pl
    # function: insert mysql data from csv file
    # usage : insert_mysql_data.pl csv_file
    # Author: shenxiangfeng@360.cn
    # Date: 2012-9-20

    use strict;
    use warnings;
    use DBI;

    # define the global vars
    my $CHECK_DEBUG=1;
    my $CSV_FILE;
    my $lines = 0;
    # ------------------------
    #  signal handle function
    # ------------------------
    local $SIG{'INT'} = \&__int_handler;
    sub __int_handler
    {
        my @int = @_;
        if ($int[0]) {
            # Called on a user interrupt
            die "\nInterrupted by \"ctrl+c\"\n";
        }
    }


    # get the parameter
    my $parameter = shift;
    if (! -e $parameter) {
        die("program parameter is not right. \nUsage: md5_check.pl package_name_or_directory\n");
    }
    elsif (-f $parameter) {
    # connect mysql database
    my $dbh = DBI->connect("DBI:mysql:database=tuiguang;host=localhost", "root", "", {'RaiseError' => 1});
    $dbh->do("SET NAMES 'utf8'");
        # parameter is csv file
        open($CSV_FILE,"<","$parameter") or die "Can't open csv file $parameter.\n";
    while (<$CSV_FILE>) {
            my $line=$_;
            chomp($line);
    my @parts=split(/,/,$line);
    print "@parts will insert.\n" if ($CHECK_DEBUG);
    my $rows = $dbh->do("INSERT INTO AccountInfo (ID, Name, PassWord, Property, ChanType, Status, Discount, ChanBelong, DownloadUrl) 
                        values ('$parts[0]', '$parts[1]', '$parts[2]', $parts[3], $parts[4], $parts[5], $parts[6], $parts[7], '$parts[8]')");
    print "$rows row(s) affected.\n" if ($CHECK_DEBUG);
    $lines ++;
    }
    # clean up
        close($CSV_FILE);
    $dbh->disconnect();
    }
    # post process 
    print "Successfully process the $lines lines files. NO error found.\n";
    exit(0);

    展开全文
  • 展开全部sql2000的.sql脚本导出来(要636f707962616964757a686964616f31333264623233包含你的数据),然后修改这个脚本的语法使其符合mysql,最后在mysql命令行下导入脚本就可以了。复制数据库操作可以导出数据,但...
  • sql文件导入阿里云RDS数据库操作

    千次阅读 2018-03-06 11:20:59
    下面介绍一种方法可以支持超大sql脚本导入:那就是通过本地服务器脚步导入到远处RDS数据库(本人实测,导入4.8G的sql脚本文件)。步骤 :1 登录可以通过内网访问RDS的云服务器ECS,并将sql脚本文件通过ftp上传到...
  • 数据库几十万的数据量备份下来后,如果直接在一个文件导入到数据库中,无法实现。于是就想着怎么按行数据文件分割成小块文件操作。  仔细看了下linux的head和tail指令,发现很符合按行分割的要求。接下来就是...
  • SQL脚本怎么处理,下载了个图书管理系统,怎么把里面的文件导入到eclipse中
  • 以小见大,下面是2个小技能的具体实战:如何灵活地处理文件读取如何数据处理为自己想要的数据类型方法1:拷贝文章时,直接内容赋值给一个变量,保存一个 .py 文件中。然后在脚本中,导入它。存储文章的文件 ...
  • 开发环境搭建过程中,可能需要公司远程的数据库导入到本地数据库进行开发测试,自己想怎么折腾数据都没问题。 当数据量非常大的时候,可以使用cmd命令行的方式可以快速到导入数据库,要比navicat的运行sql文件...
  • 方法1:拷贝文章时,直接内容赋值给一个变量,保存一个 .py 文件中。然后在脚本中,导入它。存储文章的文件 article.pycontent = """ 复制的文章内容 """存储脚本文件 my_code....
  • 我在几台linux虚拟机上打好了hadoop平台,这时直接用linux的终端输入命令: ``` hadoop fs -put Desktop/test.txt / ...是可以本地桌面的text.txt...通过python脚本上传本地文件到HDFS应该怎么样最快最好呢?
  • 而平常我们还会经常碰到一种情况:已有的数据文件导入数据库中,建为一张数据表,这篇将手把手教你怎么做到这个操作,如何避开里面的坑耗时:应不超过30分钟准备:python相关的一系列准备,和【二】一样,这里就不...
  • %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量 未被定义,或者没有找到文件,此组合...
  • Storm.dll MPQ文件读取

    2013-02-20 14:24:28
    然后这种方法也能隐藏其它文件,但无法隐藏在物编中使用文件(如被某单位使用的导入模型)、地图必备文件(如j)和覆盖原路径文件(如替换的载入图片)。 3.hash扫描式。但是还没完,还有一种方式,某些软件绕...
  • 2014数据库上面的库复制2008r2的库上面,备份还原因为版本不同,没办法备份,脚本导入2008r2显示无法执行,应该是内存不够,分离附加,因为2014上的数据库的库不能删除,所以找到的文件,但是复制不下来,怎么才能...
  • 模块1、 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。...如想要导入模块 support,需要命令放在脚本的顶端。3、 Python 的 from 语句让你从模块中导入一个指定的部分当前命名空间中,语法:...
  • 之前我们讲了,如何去cocos2d-x引擎自带的MoonWarriors例子工程导入源码,然后可以方便学习和编辑。 但是我事后发现,如果修改了js代码后,点击调试,运行时仍然是之前的结果,毫无变化。这是怎么回事呢? ...
  • 之前我们讲了,如何去cocos2d-x引擎自带的MoonWarriors例子工程导入源码,然后可以方便学习和编辑。 但是我事后发现,如果修改了js代码后,点击调试,运行时仍然是之前的结果,毫无变化。这是怎么回事呢? ...
  • ProComm Plus安装与连接脚本文件;Astound介绍文件 AST:Astound多媒体文件;ClarisWorks“助手”文件 Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:...
  • 最近在做django项目,需要在后台管理系统加入富文本编辑 其实加入富文本编辑很简单,就是导入几个编辑器的js脚本到admin页面内,下面说说怎么做 ...第三步,最重要的一步,导入到admin页面。在要导入的app...
  • 阿斯顿

    2010-06-18 13:45:00
     比如:设置系统变量path=C:/aaa/bin   新建一个iss脚本文件,保存一个目录下(同时你的待打包的程序文件也放在这个目录下),就可以开始写脚本了,inno setup的脚本类似于windows ini文件...
  • 1.朋友们经常会再下载资源的时候遇到,明明好不容易找到的资源,导入到max中,平滑组失效。 这个时候大多数人会用对称命令,法线命令来解决部分模型平滑组失效问题。但是这种方法是不彻底的。 还会有一些顽固模型,...

空空如也

空空如也

1 2 3 4
收藏数 63
精华内容 25
关键字:

怎么把脚本导入到文件