1. 程式人生 > >discuz論壇用sql語句批量插入測試資料(百萬級別)

discuz論壇用sql語句批量插入測試資料(百萬級別)

public class InsertIntoSQL
{
public final static String path = "D:/ComsenzEXP/wwwroot/discuz/attachments/testLog.txt";

public static void main (String[] agrs)
{
   //System.out.println(toHexString("測試"));
   //System.out.println(toStringHex("0x74657374"));
   insertData(300000,4,100000,"test","test");
  
}


/*
* @deprecated 插入資料
* @param startNumber
* @param endNumber
* @param fourmid
* @param postsNumber
* @param todayposts
*/
public static void insertData(long insertNumber,int fourmid,long todayposts,String title,String content)
{
   String message = "插入:" + insertNumber + "條記錄";
   System.out.println(message);
   appendMethod(path,message);
  
   long startTime = System.nanoTime();
   message = "insertData startTime:" + startTime;
   System.out.println(message);
   appendMethod(path,message);
   
   
    DBManager dbm = new DBManager("localhost:6033", "discuz", "discuz", "discuzexp");
   String sql = "";
   String pid = getLastRowByColumnValue(dbm,"cdb_posts","pid");
   long startNumber = Long.parseLong(pid) + 1;
   long endNumber = startNumber + insertNumber;
   long i = 1;
   //content = toHexString(content);
   //0x6d4b8bd551855bb9
   //0x6d4b8bd5
   //String insertTitle = title;
   for(i = startNumber; i < endNumber; i++)
   {
    //insertTitle = insertTitle + i;
    //insertTitle = toHexString(insertTitle + i);
   
    sql = "INSERT INTO cdb_posts VALUES ('" + i + "','" + fourmid + "','" + i + "','1',0x61646d696e,'1',0x74657374,'1221120302',0x74657374,0x3139322e3136382e302e3335,'0','0','0','0','-1','-1','0','0','0','0','0')";
    dbm.executeUpdate(sql);
    sql = "INSERT INTO cdb_threads VALUES ('" + i + "','" + fourmid + "','0','0','0','0',0x61646d696e,'1',0x74657374,'1221120302','1221120302',0x61646d696e,'1','0','0','0','0','0','0','0','0','0','0','0','0','0','0')";   
    dbm.executeUpdate(sql);
   
    /*
    sql = "INSERT INTO cdb_posts VALUES ('" + i + "','" + fourmid + "','" + i + "','1',0x61646d696e,'1','" + insertTitle + "','1221120302','" + content + "',0x3139322e3136382e302e3335,'0','0','0','0','-1','-1','0','0','0','0','0')";
    dbm.executeUpdate(sql);
    sql = "INSERT INTO cdb_threads VALUES ('" + i + "','" + fourmid + "','0','0','0','0',0x61646d696e,'1','" + insertTitle + "','1221120302','1221120302',0x61646d696e,'1','0','0','0','0','0','0','0','0','0','0','0','0','0','0')";   
    dbm.executeUpdate(sql);
    */
   }
   todayposts = endNumber - 499999;
   sql = "UPDATE cdb_forums SET lastpost='0x74657374', threads=" + endNumber + ", posts=" + endNumber + ", todayposts=" + todayposts + " WHERE fid=" + fourmid;
   dbm.executeUpdate(sql);
  
   message = "insertData endTime:" + System.nanoTime();
   System.out.println(message);
   appendMethod(path,message);
  
   long estimatedTime = System.nanoTime() - startTime;
   message = "相差(用時):" + estimatedTime + "納秒," + estimatedTime/1000000000 + "秒/r/n/r/n";//1秒=10億納秒
   System.out.println(message);
   appendMethod(path,message);
}

/*
* @deprecated 獲取最後一行某列的值
* @param table
* @param column
*/
public static String getLastRowByColumnValue(DBManager dbm,String table,String column)
{
   String sql = "";
   sql = "select " + column + " from " + table + " order by " + column + " desc limit 1";
   ResultSet rs = dbm.executeQuery(sql);
   String str = "";
   try {
    while( rs.next())
    {
     str = rs.getString(column);
    }
   } catch (SQLException e) {
  
    e.printStackTrace();
   }
   return str;
}

//轉化字串為十六進位制編碼
public static String toHexString(String s)  
{  
   String str="";  
   for (int i=0;i<s.length();i++)  
   {  
    int ch = (int)s.charAt(i);  
    String s4 = Integer.toHexString(ch);  
    str = str + s4;
   }  
   return "0x" + str;  
}

//轉化十六進位制編碼為字串
public static String toStringHex(String s)
{
   if("0x".equals(s.substring(0, 2)))
   {
    s =s.substring(2);
   }
   byte[] baKeyword = new byte[s.length()/2];
   for(int i = 0; i < baKeyword.length; i++)
   {
      try
      {
       baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));
      }
      catch(Exception e)
      {
       e.printStackTrace();
      }
   }
   
   try
   {
    s = new String(baKeyword, "utf-8");//UTF-16le:Not
   }
   catch (Exception e1)
   {
    e1.printStackTrace();
   }
   return s;
}

/**
    * B方法追加檔案:使用FileWriter
    * @param fileName
    * @param content
    */
public static void appendMethod(String fileName, String content){
    try {
     //開啟一個寫檔案器,建構函式中的第二個引數true表示以追加形式寫檔案
     FileWriter writer = new FileWriter(fileName, true);
     writer.write(content + "/r/n");
     writer.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
}

相關推薦

discuz論壇sql語句批量插入測試資料百萬級別

public class InsertIntoSQL {public final static String path = "D:/ComsenzEXP/wwwroot/discuz/attachments/testLog.txt";public static void main (String[] agrs

sql語句批量插入測試資料

修改執行一下sql: declare cmd varchar2(100); i number(10) :=1; item varchar2(50); begin   for i in 1..40000

藉助資料庫執行sql語句批量生成測試資料

本人在學習selenium2java和資料庫使用的過程中,需要測試兌換卡購買課程的功能。測試的兌換卡之前都是手動新增的比較麻煩,自己寫了一個方法,批量生成測試兌換卡。 //新增兌換卡 public static void addCoupon() throws Class

T-sql語句批量插入資料

-- 使用declare 宣告變數 declare @i int declare @sumPhone int -- 使用 set 為變更賦值 set @i = 1 set @sumPhone = 1

SQL批量插入測試資料

方法一:直接使用insert into...select...方法 CREATE TABLE test( id int ); --count表示插入的次數 insert into test

sql語句快速備份表資料

1.Sql Server 資料庫 --DataTable 原資料表 --DataTable_20150717 要備份的新表名 select * into DataTable_20150717 fro

SQL Server 批量主分割槽備份Multiple Jobs

USE [msdb] GO /****** 物件: Job [Barefoot_Opinion_9565] 指令碼日期: 01/06/2013 14:07:27 ******/ BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @Retur

SQL Server 批量主分割槽備份One Job

--批量備份資料庫 DECLARE @DBName VARCHAR(100) DECLARE @CurrentTime VARCHAR(50) DECLARE @FileName VARCHAR(200) DECLARE @WithType CHAR(20) DECLARE @Backup_Da

關於sql語句中的一些函式長期更新

前言在最近看別人的sql的時候,看到一些函式,比如left(),right()等等,好奇是什麼意思,查詢之後覺得還是挺有用的,特此記錄下來。部落格會在遇到新的函式的時候定期更新。—————————————————————————————————————————————————

經典sql語句大全-非常有用特指Mysql

7、說明:新增主鍵: Alter table tabname add primary key(col) 說明:刪除主鍵: Alter table tabname drop primary key(col) 8、說明:建立索引:create [unique] index idxname on tabname(c

SQL語句向表格中插入資料

向表格中插入資料 SQL語言使用insert語句向資料庫表格中插入或新增新的資料行。Insert語句的使用格式如下:  insert into tablename  (first_column,...last_column)  values (first_v

SQL Server2012使用導入和導出向導時,sql語句作為數據源,出現數據源類型會變成202或者203

tegra 程序 保存 ons tail nis sdn 信息 ping 用MS SqlServer2012進行數據導出時,使用的查詢語句導出,但是出現了錯誤: “發現 xx個未知的列類型轉換您只能保存此包“ 點擊列查看詳細錯誤信息時,可以看到: [源信息]源位置: 192

SQL語句查表

bsp from eache http src com 查表 舉例 語句 (計應154蘭家才)格式 舉例 select 教師編號,教師職稱 from dbo.Teacher 用SQL語句查表

第八章,SQL語句操作數據

values 通過 select語句 sql 定義 開頭 更新數據 算數運算 優先級 SQL的組成: (1)DML(Data Manipiation Language ,數據操作語言,)用來插入,修改和刪除數據庫中的數據,如:INSERT,UPDATE,DELETE等。

【存儲過程】SQL語句獲得一個存儲過程返回的表

into log 返回 dbo emp ins 過程 arc 存儲過程 定義一個存儲過程如下: create proc [dbo].[test1] @id int as select 1 as id,‘abc‘ as name union all select @id

SQL語句創建和刪除Access數據庫中的表;添加列和刪除列

建立 ... logs ted 字段 table eat rop 長度 用SQL語句創建和刪除Access數據庫中的表;添加列和刪除列 Posted on 2009-08-11 13:42 yunbo 閱讀(1240) 評論(0) 編輯 收藏 用SQL語句創建和刪除A

列出各個部門中工資高於本部門的平均工資的員工數和部門號,並按部門號排序sql語句來表達

AR 思路 進行 info family order size table ID 查詢出各個部門中工資高於本部門的平均工資的員工數和部門號,並按部門號排序(用sql語句來表達) 1.創建的表格 2.思路: (1)首先查詢各個部門的平均工資 1 select dept

SQL語句操作數據

大小寫 存在 dcl 算數運算 變量 UC 函數 creat nio 使用T-SQL插入數據 1.SQL簡介 (1)SQL是什麽 structured Query Language:結構化查詢語句 *不區分

SQL語句操作數據------解析

解析 語句 錯誤 表名 標識 組成 nio 分隔 數據 一.SQL 結構化查詢語言 1.T-SQL 和 SQL的關系 T-SQL是SQL的增強版 2.SQL的組成 2.1 DML (數據操作語言) 增加,修改,刪除等數據操作 2.2 DCL (數據控制語言) 存儲許可,存儲

SQL語句向數據庫添加date類型字段

是我 insert date 通過 string 增長 ring style info 在開發的時候,經常要寫條SQL語句將信息插入表中,插入的數據如果字段是date類型,就必須將date類型轉換成字符串String類型在通過sql語句插入數據庫。這是我找到添加該字段的方法