問題タブ [tsql-parser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
310 参照

sql-server - SQL Server のフロー "batchparser.dll" - 使い方は?

batchparser.dllSQL Server のディレクトリ構造 ( ) の奥深くに隠されている SQL Server を利用する、文書化された、または少なくとも漠然とした文書化された方法はありますC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binnか?

T-SQL バッチを送信し、構文エラーを解析する可能性はありますか?

0 投票する
0 に答える
380 参照

c# - TSql100Parser ノードの親を取得する

クラスの使用に関するドキュメントが不足しているためTSql100Parser、特定のノードの親を特定する方法はありますか?

私はアセンブリを使用して解析を行っていますMicrosoft.Data.Schema.ScriptDom.SqlMicrosoft.Data.Schema.ScriptDom

例:

これが不可能な場合は、親を追加パラメーターとして__processExpression()メソッドに渡すことができますが、公式の方法がある場合はこれを避けたいと思います。

0 投票する
2 に答える
3701 参照

c# - .sqlファイルC#のDDLからストアドプロシージャとオブジェクト名を解析する正規表現

いくつかのストアド プロシージャの DDL 定義、テーブル、トリガー、ビューなどのステートメントの変更を含む .sql ファイルがあります。

次のようなステートメントを含めることができます。

  • プロシージャの作成 / プロシージャの作成
  • ALTER PROC / ALTER PROCEDURE
  • DROP PROC / DROP PROCEDURE
  • テーブル/トリガー/ビューの作成
  • テーブル/トリガー/ビューの変更
  • ドロップ テーブル/トリガー/ビュー

.sql ファイルを解析し、オブジェクトのリスト (Proc/Table/View 名) とそれらに対して実行されているアクション (ALTER/CREATE/DROP) を取得する最良の方法は何ですか? Microsoft.Data.Schema.ScriptDom や ANTLR などのパーサーを使用する代わりに、RegEx を使用するのが最も簡単な方法だと考えています。しかし、すべてのシナリオをカバーするどの種類の RegEx を作成すればよいかわかりません。

これまでのところ、この式は上記のすべてのルールに一致することができます。しかし、その前にあるオブジェクトの名前を取得するにはどうすればよいですか。例えば。一致する

(create|alter|drop)\s+(procedure|proc|table|trigger|view|function|constraint)

私の質問は、AdvisorGroups という名前を取得する方法です。[dbo] を持つ可能性があるため、私の RegEx も不完全です。その前かどうか。Alter table AdvisorGroups の可能性もあります。すべての可能性を考慮しようとしているわけではありません。最低限のことだけ。

ALTER TABLE [dbo].[AdvisorGroups] 制約を追加 [XXX]

-前もって感謝します

0 投票する
1 に答える
2029 参照

c# - DDL(作成、変更、削除).sqlスクリプト内の非表示のDML(挿入、更新、削除)ステートメントを検出するための正規表現

更新:この質問を簡単にするため。文字列を変更したので、BEGINENDについてまったく心配する必要はありません。代わりに、ターミネータとしてGOステートメントしかありません。私は今、他の人からいくつかの答えを得ることを願っています

DDLスクリプト(CREATE、ALTER、DROP)でINSERT、UPDATE、DELETEなどの非表示のDMLステートメントを検出できる正規表現を作成する必要があります。

例。以下のスクリプトでは、2つのdeletetable5ステートメントと最後のinsertintotable3ステートメントをキャッチする必要があります。ただし、実際にはストアドプロシージャ自体の本体にある挿入ステートメントは無視する必要があります。

ここでこの正規表現を実行すると:http://regexr.com?33rf3、90 を達成したことがわかります。動作していない唯一の部分は、最後のGOまで貪欲な試合を行っていることです。最初のGOで停止する必要があります。+を使ってみましたか?欲張りでないようにするための演算子ですが、動作したくありません。

0 投票する
0 に答える
1559 参照

c# - Microsoft.SqlServer.TransactSql.ScriptDom : TSqlTokenType

次のような SQL クエリで解析する場合:

TSqlParserToken を繰り返し処理すると、TokenType というプロパティがあります。私は以下を取得します:

パーサーがこれらの値を返すためには、基礎となるスキーマを認識している必要があることを理解しています。より意識的なトークンのセットを返すことができるように、基礎となるオブジェクトをパーサーにフィードすることは可能ですか?

TSqlTokenType 列挙型には、'Table'、'Schema'、'View' などの値もあるため、これは可能であるに違いありません。資料が少ないだけです。ダン

0 投票する
2 に答える
1621 参照

java - Javaで実際のデータベース接続なしでSQLを実行できますか?

Javaで実際のデータベース接続なしでSQLを実行できますか? 例:

Java コードの実行時に :param を置き換えます。これを行う方法はありますか?

このリンクを見つけました: Oracle SQL文字列を指定して選択した列を抽出するにはどうすればよいですか?

しかし、このリンクには簡単な解決策はありません

現在考えている: ダミーの hsqldb 接続と SQL クエリの実行。ただし、メモリ内の新しいデータベースにまたがる必要があります。

より良い&迅速な解決策はありますか?