Я использую SQLParser (C#), предоставленный Gudusoft (sqlparser.com), не уверен, что кто -то использовал его раньше. Затем, вызывая метод Parse (), вы можете получить все токены, метки и т. Д.line 1: TGSqlParser parser = new TGSqlParser(TDbVendor.DbVMssql); // init the parser object
line 2: parser.SqlText.Text = code; // set input sql code, for e.g. "SELECT * FROM table_sales"
line 3: int parser_ret = parser.Parse(); // call parse method
line 4: string output = parser.XmlText; // retrieve the xml generated by line 3. The xmlText could be 500,000-character long.
< /code>
строка 1-3 работает очень эффективно (сделано менее чем за секунду). Тем не менее, линия 4 очень медленная (может занять минуту или более). Смущая вещь заключается в том, что, используя отладчик, я решил, что Parser.xmlText уже сгенерирован и готов к доступу в строке 3. Строка 4 предназначена для доступа к этому значению. < /p>
Я новичок в C#, не уверен, , скорее всего, будет проблемой этого конкретного анализатора или это общая проблема C#.>
Подробнее здесь: https://stackoverflow.com/questions/180 ... t-too-slow