Skip to content

Commit

Permalink
Site updated: 2024-03-24 21:46:28
Browse files Browse the repository at this point in the history
  • Loading branch information
meiMingle committed Mar 24, 2024
1 parent 65c7faa commit 955f055
Show file tree
Hide file tree
Showing 23 changed files with 223 additions and 149 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ <h1>maven项目构建加速(二)辅助工具篇</h1>

<span class="tag">

<a href="/tags/maven/" style="color: #ff7d73">maven</a>
<a href="/tags/maven/" style="color: #00bcd4">maven</a>
</span>

</span>
Expand Down
2 changes: 1 addition & 1 deletion 2022/11/11/IntelliJ-IDEA常用配置/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ <h1>IntelliJ IDEA常用配置</h1>

<span class="tag">

<a href="/tags/IDEA/" style="color: #ff7d73">IDEA</a>
<a href="/tags/IDEA/" style="color: #00bcd4">IDEA</a>
</span>

</span>
Expand Down
126 changes: 100 additions & 26 deletions 2024/03/13/数据库批量INSERT优化/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -198,21 +198,20 @@ <h1>数据库批量Insert优化</h1>

<span class="tag">

<a href="/tags/SQL%E4%BC%98%E5%8C%96/" style="color: #00a596">SQL优化</a>
<a href="/tags/SQL%E4%BC%98%E5%8C%96/" style="color: #ffa2c4">SQL优化</a>
</span>

<span class="tag">

<a href="/tags/SQL%E5%90%88%E5%B9%B6/" style="color: #ff7d73">SQL合并</a>
<a href="/tags/SQL%E5%90%88%E5%B9%B6/" style="color: #00a596">SQL合并</a>
</span>

</span>

</div>

<div class="content" v-pre>
<h1 id="一、合并多条Insert语句"><a href="#一、合并多条Insert语句" class="headerlink" title="一、合并多条Insert语句"></a>一、合并多条Insert语句</h1><p>提高批量插入语句执行效率的办法之一就是将多条INSERT合并为一条,以下代码支把从Navicat导出的转储文件(结构和数据)自动合并INSERT语句,自动忽略非INSERT语句。</p>
<p>TODO:注释过滤</p>
<h1 id="一、合并多条Insert语句"><a href="#一、合并多条Insert语句" class="headerlink" title="一、合并多条Insert语句"></a>一、合并多条Insert语句</h1><p>提高批量插入语句执行效率的办法之一就是将多条INSERT合并为一条,以下代码可以自动合并INSERT语句,自动忽略非INSERT语句,可以设置是否过滤注释。</p>
<pre><code class="java">package org.example;

import cn.hutool.core.io.FileUtil;
Expand All @@ -234,27 +233,28 @@ <h1 id="一、合并多条Insert语句"><a href="#一、合并多条Insert语句

// x个insert语句合并为一个
final int x = 50;
// 移除注释
final boolean rmComments = true;

try (// 输入文件是可以是包含非Insert语句的混合文件,例如由Navicat、Dbeaver等软件的转储的SQL文件(包含结构和数据)
BufferedReader reader = FileUtil.getReader(&quot;D://mysqlintellij.sql&quot;, StandardCharsets.UTF_8);
BufferedWriter writer = FileUtil.getWriter(&quot;D://mysqlintellij_.sql&quot;, StandardCharsets.UTF_8, false)) &#123;

int n = 0;
SqlParser sqlParser = new SqlParser(reader);
SqlParser sqlParser = new SqlParser(reader, rmComments);
// 上一个select语句的关键部分
String preInsertStatementKey = null;
String preSql = null;
boolean preSqlIsInsert = false;

while (true) &#123;
String s = sqlParser.readOneSql();
if ((s == null || s.isEmpty()) &amp;&amp; (preSql == null || preSql.isEmpty())) &#123;
break;
&#125;
while (sqlParser.hasNext()) &#123;
SqlParser.SQLPart sqlPart = sqlParser.readOneSql();
String sql = sqlPart.getSql();
// System.out.println(sqlPart.getSqlNo());
// 判断当前sql是不是insert语句
boolean isInsertSql = s != null &amp;&amp; !s.isEmpty() &amp;&amp; s.toLowerCase().contains(&quot;insert&quot;);
boolean isInsertSql = sql != null &amp;&amp; !sql.isEmpty() &amp;&amp; sql.toLowerCase().contains(&quot;insert&quot;);
if (isInsertSql) &#123;
String insertStatementKey = s.substring(s.toLowerCase().indexOf(&quot;insert&quot;), s.toLowerCase().indexOf(&quot;values&quot;) + 6);
String insertStatementKey = sql.substring(sql.toLowerCase().indexOf(&quot;insert&quot;), sql.toLowerCase().indexOf(&quot;values&quot;) + 6);
if (preSqlIsInsert) &#123;

boolean sameInsert = insertStatementKey.equals(preInsertStatementKey);
Expand Down Expand Up @@ -291,7 +291,7 @@ <h1 id="一、合并多条Insert语句"><a href="#一、合并多条Insert语句
writer.append(preSql).append(&quot;\n&quot;);
&#125;
&#125;
preSql = s;
preSql = sql;

&#125;
System.out.println(&quot;完成&quot;);
Expand All @@ -307,39 +307,75 @@ <h1 id="一、合并多条Insert语句"><a href="#一、合并多条Insert语句
private final Reader reader;

/**
* 当前行号
* 当前sql编号
*/
private long lineNo = -1;
private long sqlNo = -1;
/**
* 前一个特殊分界字符
*/
private int preChar = -1;
private int prePreChar = -1;

private final Buffer buf = new Buffer(IoUtil.DEFAULT_LARGE_BUFFER_SIZE);

private final boolean rmComments;
/**
* 在多行注释中
*/
boolean inMComment = false;
/**
* 在单行注释中
*/
boolean inLComment = false;

private boolean finished;
/**
* 当前读取SQL
*/
private final StrBuilder currentField = new StrBuilder(512);

SqlParser(Reader reader) &#123;
SqlParser(Reader reader, boolean rmComments) &#123;
this.reader = reader;
this.rmComments = rmComments;
&#125;

public boolean hasNext() &#123;
return !finished;
&#125;

public String readOneSql() &#123;
static class SQLPart &#123;
private long sqlNo;
private String sql;

public SQLPart(long sqlNo, String sql) &#123;
this.sqlNo = sqlNo;
this.sql = sql;
&#125;

public long getSqlNo() &#123;
return sqlNo;
&#125;

public void setSqlNo(long sqlNo) &#123;
this.sqlNo = sqlNo;
&#125;

public String getSql() &#123;
return sql;
&#125;

public void setSql(String sql) &#123;
this.sql = sql;
&#125;
&#125;

public SQLPart readOneSql() &#123;

final Buffer buf = this.buf;

int copyLen = 0; // 拷贝长度

// int preChar = this.preChar;//前一个特殊分界字符

final StrBuilder currentField = this.currentField;

boolean inComment = false;

while (true) &#123;
if (!buf.hasRemaining()) &#123;
// 此Buffer读取结束,开始读取下一段
Expand All @@ -352,8 +388,9 @@ <h1 id="一、合并多条Insert语句"><a href="#一、合并多条Insert语句
finished = true;

if (currentField.hasContent() || preChar == &#39;;&#39;) &#123;

// 剩余部分作为一个SQL返回
return currentField.toStringAndReset();
return new SQLPart(++sqlNo, currentField.toStringAndReset());
&#125;
break;
&#125;
Expand All @@ -364,22 +401,59 @@ <h1 id="一、合并多条Insert语句"><a href="#一、合并多条Insert语句

final char c = buf.get();


if (rmComments) &#123;
// 多行注释
if (c == &#39;*&#39; &amp;&amp; preChar == &#39;/&#39;) &#123;
copyLen = 0;
inMComment = true;
&#125;
if (inMComment) &#123;
if (c == &#39;/&#39; &amp;&amp; preChar == &#39;*&#39;) &#123;
inMComment = false;
&#125;
buf.mark();
prePreChar = preChar;
preChar = c;
continue;
&#125;

// 单行注释
if (c == &#39; &#39; &amp;&amp; preChar == &#39;-&#39; &amp;&amp; prePreChar == &#39;-&#39;) &#123;
copyLen = 0;
inLComment = true;
&#125;
if (inLComment) &#123;
if (c == &#39;\n&#39; || c == &#39;\r&#39;) &#123;
inLComment = false;
&#125;
buf.mark();
prePreChar = preChar;
preChar = c;
continue;
&#125;
&#125;

if (c == &#39;;&#39;) &#123;
if (copyLen &gt; 0) &#123;
buf.appendTo(currentField, copyLen);
&#125;
buf.mark();
this.preChar = c;
return currentField.append(c).toStringAndReset();
prePreChar = preChar;
preChar = c;

return new SQLPart(++sqlNo, currentField.append(c).toStringAndReset());
&#125; else if (this.preChar == &#39;;&#39; &amp;&amp; (c == &#39;\r&#39; || c == &#39;\n&#39; || c == &#39; &#39;)) &#123;
buf.mark();
&#125; else &#123;
copyLen++;
this.preChar = c;
prePreChar = preChar;
preChar = c;
&#125;

&#125;

sqlNo++;
return null;
&#125;

Expand Down
2 changes: 1 addition & 1 deletion 2024/03/16/Excel导入导出方案汇总/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ <h1>Excel导入导出方案汇总</h1>

<span class="tag">

<a href="/tags/excel/" style="color: #ff7d73">excel</a>
<a href="/tags/excel/" style="color: #00bcd4">excel</a>
</span>

</span>
Expand Down
2 changes: 1 addition & 1 deletion 2024/03/22/一些可能有用的脚本/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ <h1>一些可能有用的脚本</h1>
:disabled="cryptoStatus === 'success'"
ref="crypto"
placeholder="文章被加密,请输入密码"
data-encrypted="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"
data-encrypted="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"
data-shasum="a5998c739aa247db6740e3dafba97c1cb64b79c40e531d4d993779b35fd0a85d"
v-model="crypto"
/>
Expand Down
18 changes: 9 additions & 9 deletions archives/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ <h3>maven项目构建加速(一)命令参数篇</h3>

<span class="tag">

<a href="/tags/maven/" style="color: #03a9f4">maven</a>
<a href="/tags/maven/" style="color: #00a596">maven</a>
</span>

</span>
Expand Down Expand Up @@ -232,7 +232,7 @@ <h3>maven项目构建加速(二)辅助工具篇</h3>

<span class="tag">

<a href="/tags/maven/" style="color: #ff7d73">maven</a>
<a href="/tags/maven/" style="color: #00a596">maven</a>
</span>

</span>
Expand Down Expand Up @@ -268,7 +268,7 @@ <h3>IntelliJ IDEA常用配置</h3>

<span class="tag">

<a href="/tags/IDEA/" style="color: #03a9f4">IDEA</a>
<a href="/tags/IDEA/" style="color: #ff7d73">IDEA</a>
</span>

</span>
Expand Down Expand Up @@ -304,12 +304,12 @@ <h3>数据库批量Insert优化</h3>

<span class="tag">

<a href="/tags/SQL%E4%BC%98%E5%8C%96/" style="color: #00bcd4">SQL优化</a>
<a href="/tags/SQL%E4%BC%98%E5%8C%96/" style="color: #03a9f4">SQL优化</a>
</span>

<span class="tag">

<a href="/tags/SQL%E5%90%88%E5%B9%B6/" style="color: #00a596">SQL合并</a>
<a href="/tags/SQL%E5%90%88%E5%B9%B6/" style="color: #00bcd4">SQL合并</a>
</span>

</span>
Expand Down Expand Up @@ -345,12 +345,12 @@ <h3>解决导出文件中文名乱码</h3>

<span class="tag">

<a href="/tags/%E7%BC%96%E7%A0%81/" style="color: #ff7d73">编码</a>
<a href="/tags/%E7%BC%96%E7%A0%81/" style="color: #ffa2c4">编码</a>
</span>

<span class="tag">

<a href="/tags/%E4%B9%B1%E7%A0%81/" style="color: #00a596">乱码</a>
<a href="/tags/%E4%B9%B1%E7%A0%81/" style="color: #03a9f4">乱码</a>
</span>

</span>
Expand Down Expand Up @@ -386,7 +386,7 @@ <h3>Excel导入导出方案汇总</h3>

<span class="tag">

<a href="/tags/excel/" style="color: #03a9f4">excel</a>
<a href="/tags/excel/" style="color: #00a596">excel</a>
</span>

</span>
Expand Down Expand Up @@ -422,7 +422,7 @@ <h3>一些可能有用的脚本</h3>

<span class="tag">

<a href="/tags/%E8%84%9A%E6%9C%AC/" style="color: #00bcd4">脚本</a>
<a href="/tags/%E8%84%9A%E6%9C%AC/" style="color: #ff7d73">脚本</a>
</span>

</span>
Expand Down
Loading

0 comments on commit 955f055

Please sign in to comment.