Is there a regex which extracts SQL queries from a string? I'm NOT interested to validate any SQL syntax, rather and only extracting a selection of SQL commands. This to parse a given SQL file/string in a flexible manner.
Given is the following SQL file/string example:
SELECT
*
FROM
test_table
WHERE
test_row = 'Testing ; semicolon';
SELECT * FROM another_test_table;
INSERT INTO
table_name
VALUES
(value1,'value which contains semicolon ;;;;',value3,...);
Some pseudocode example would be: ^(UPDATE|SELECT|INSERT INTO)(.*)(;)$
. In the future i'm looking to extend this with all (possible) commands.
- Look for a starting match with either: (UPDATE|SELECT|INSERT|INTO)
- Zero or more
any character
(including whitespaces and newlines)
- Stop at
;
, which delimits the SQL query.
Whenever this would be possible via a regex the following java code is able to extract all SQL commands:
final String regex = "LOOKING_FOR_THIS_ONE";
final Pattern p = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = p.matcher(content);
while (matcher.find()) {
// matcher.group() now contains the full SQL command
}
Thanks in advance!
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…