2011-06-23 17 views
1

私はSQLクエリやSQLデータベースでの経験がありませんでしたので、私の用語が間違っている場合は私に感謝してください。条件に基づいて不要なSQLクエリを削除する

私は約17,000個のSQL挿入文を含むファイルを持っています。ここで、データベースの5つの列/属性のデータを入力します。これらの17,000件のステートメントには、5つの列/属性すべてのデータを持つ約1200個のステートメントだけがあり、残りのステートメントは4つの列のみのデータしかありません。私はそれらの不要なステートメントを削除する必要があります(5つの列すべてにデータがありません)。

1つずつ進むことと削除する以外の方法は簡単ですか?もしそうなら、誰かが私を助けてくれるのなら大変です。

+0

不要な行に一致する正規表現を書いてから、メモ帳++を使ってファイルから簡単に削除してください。 –

+0

サンプルデータを数行だけ投稿すると、特定の回答を得るのに役立ちます。これは、おそらく 'grep'や' awk'を使って解決するのが簡単です。 –

答えて

1

ここで私の良い同僚と異なるアプローチは、ステージング/使い捨てのデータベースにファイルを実行することです。彼の応答で@Robが呼び出した削除を使用して、テーブルを目的のデータセットにペアーダウンします。次に、SSMS Tools Packのような優れたフリーツールを使用して、これらの挿入ステートメントをリバースエンジニアリングします。

0

notepad ++でファイルを開くと、正規表現を使ってすべての "bad"行を置き換えます。

1

私は2つのアプローチを考えることができます:

1:SQLを使用して:すべてのデータを挿入し、それが必要なすべてのデータを持っていないすべてのレコードを削除するクエリを実行します。テーブルが現在空でない場合は、現在のデータが "終了"するIDを追跡し、照会でそれをWHEREステートメントとして使用できるようにします。

DELETE FROM myTable WHERE a IS NULL OR b IS NULL /* etc. */ 

2:「悪い」レコードまたは「良い」レコードのいずれかに一致するように、テキストエディタまたはコマンドラインを使用し:正規表現とSQLファイルを処理します。ほとんどのテキストエディタには、正規表現を使用できる検索と置換があります。コマンドラインでgrepや他のツールを使って処理することもできます。また、あなたの言葉の言語で解析するスクリプトでさえ、その点では問題ありません。

関連する問題