SQLからテーブル名を抜出したい

JavaScript

<!DOCTYPE html>
<html>
<head>
  <title>Extract Table Names from SQL</title>
</head>
<body>
  <input type="file" id="file-input" accept=".txt,.sql" />
  <button id="extract-btn">Extract Table Names</button>
  <div id="output"></div>
  <script>
    const fileInput = document.getElementById('file-input');
    const extractBtn = document.getElementById('extract-btn');
    const outputDiv = document.getElementById('output');
    const regex = /\bFROM\s+([^\s;]+)|\bJOIN\s+([^\s;]+)/gi;
    
    extractBtn.addEventListener('click', () => {
      // テキストファイルからSQL文を読み込む
      const file = fileInput.files[0];
      if (!file) {
        alert('Please select a file');
        return;
      }
      const reader = new FileReader();
      reader.onload = () => {
        const data = reader.result;
        
        // 正規表現を使用して、SQL文からテーブル名を抽出する
        const tableNames = [...data.matchAll(regex)].map(match => match[1] || match[2]);
        
        // ユニークなテーブル名のリストを表示する
        outputDiv.innerText = [...new Set(tableNames)].join(', ');
      };
      reader.readAsText(file);
    });
  </script>
</body>
</html>

Python

import re

# SQL文を含むテキストファイルのパス
file_path = "sample.sql"

# テキストファイルを開いて、SQL文を読み込む
with open(file_path, "r") as f:
    sql_text = f.read()

# 正規表現を使用して、SQL文からテーブル名を抽出する
table_names = re.findall(r"\bFROM\s+([^\s;]+)", sql_text, flags=re.IGNORECASE) + \
              re.findall(r"\bJOIN\s+([^\s;]+)", sql_text, flags=re.IGNORECASE)

# ユニークなテーブル名のリストを表示する
print(list(set(table_names)))

Node.js

const fs = require('fs');
const regex = /\bFROM\s+([^\s;]+)|\bJOIN\s+([^\s;]+)/gi;
const filePath = 'sample.sql';

// テキストファイルからSQL文を読み込む
fs.readFile(filePath, 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  
  // 正規表現を使用して、SQL文からテーブル名を抽出する
  const tableNames = [...data.matchAll(regex)].map(match => match[1] || match[2]);
  
  // ユニークなテーブル名のリストを表示する
  console.log([...new Set(tableNames)]);
});

サクラエディタの正規表現

FROM\s+([^\s;]+)|JOIN\s+([^\s;]+)

この記事が気に入ったらサポートをしてみませんか?