javascript - 解析 SQLite 更改、创建和更新

标签 javascript regex sqlite

我的项目涉及针对 SQLite 数据库运行临时 SQL 语句。我正在寻找一个 JavaScript 正则表达式来解析 ALTER、CREATE 和 UPDATE sql 语句。以下是我正在寻找的示例和结果。

创建索引

CREATE INDEX Christy...
CREATE INDEX IF NOT EXISTS Christy...
CREATE UNIQUE INDEX Christy...
CREATE UNIQUE INDEX IF NOT EXISTS Christy...

结果

a = [..."CREATE", "INDEX", "Christy"]

创建无表约束的表

CREATE TABLE Vicky (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL DEFAULT .10 CHECK (weight<=1));
CREATE TABLE IF NOT EXISTS Vicky (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL DEFAULT .10 CHECK (weight<=1));

结果

a = [..."CREATE", "TABLE", "Vicky", "id INTEGER PRIMARY KEY AUTOINCREMENT","name TEXT","score REAL DEFAULT .10 CHECK (weight<=1)"]

创建具有表约束的表

CREATE TABLE Vicky (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL DEFAULT .10 CHECK (weight<=1)),PRIMARY KEY (id, name));
CREATE TABLE IF NOT EXISTS Vicky (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL DEFAULT .10 CHECK (weight<=1)),PRIMARY KEY (id, name));

结果

a = [..."CREATE", "TABLE", "Vicky", "id INTEGER PRIMARY KEY AUTOINCREMENT","name TEXT","score REAL DEFAULT .10 CHECK (weight<=1)","PRIMARY KEY (id, name))"]

创建触发器

CREATE TRIGGER Arwen...
CREATE TRIGGER IF NOT EXISTS Arwen...

结果

a = [..."CREATE", "TRIGGER", "Arwen"]

创建 View

CREATE VIEW Snow...
CREATE VIEW IF NOT EXISTS Snow...

结果

a = [..."CREATE", "VIEW", "Snow"]

修改表

ALTER TABLE Vicky...

结果

a = [..."ALTER", "TABLE", "Vicky"]

更新表格

UPDATE Vicky...
UPDATE OR ROLLBACK Vicky...
UPDATE OR ABORT Vicky...
UPDATE OR REPLACE Vicky...
UPDATE OR FAIL Vicky...
UPDATE OR IGNORE Vicky...

结果

a = [..."UPDATE", "TABLE", "Vicky"] 


以下是这些 SQL 语句的 SQLite 文档的链接。

ALTER TABLE
CREATE INDEX
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
UPDATE

谢谢,
头部数据僵尸

最佳答案

您是否正在尝试解析它们以验证准确性?有效性?安全吗?

解析 SQL 并不容易,我怀疑您能否在具有那么多模式的正则表达式中完成它。也许this link可能有帮助。另见上一个问题 parsing-sql-create-table-statement-using-jquery并注意 TrimQuery 的提及,这可能有助于 JS 实现。

如果您尝试记录这些修改 (CREATE/ALTER/UPDATE) 语句正在运行的事件,也许只需创建触发器以插入到记录表中就足够了。

关于javascript - 解析 SQLite 更改、创建和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4801020/

相关文章:

python - 从字符串中提取企业名称和时间段

java - Jsoup 获取值 =""中的元素

javascript - 用一个连字符替换单词之间的连续空格

c# - 使用语句后,Sqlite 数据库保持打开状态并且文件锁定

ruby-on-rails-4 - sqlite boolean 't' 和 'f' 带有 rails 事件记录

sql - 在自连接中选择唯一对

javascript - 在提示中输入 3 个数字并在 JavaScript 中获取最大值

javascript - 更改 onClick 函数以定位编辑按钮

javascript - 从ajax返回的数据对象中读取多个变量

javascript - 如何在 JavaScript 中实现真正的 sleep()?