.sqlファイルを効果的にフィルタリングするには、「INSERT INTO」のみを実行します。

.sqlファイルを効果的にフィルタリングするには、「INSERT INTO」のみを実行します。

.sqlデータベースにインポートするのではなく、処理したいファイルにエクスポートしたデータで作業することがいくつかありました。

私は「データのみ」SQLファイルについてのみ話しています。INSERT INTO文に過ぎないもの。 (おそらく私が無視できるいくつかの序文が上部にあるでしょう。)

通常、ファイルには で始まり、で終わる複数行があり、 で始まり、INSERT INTO終わるの間とで区切られる可変数;の「レコード」があります。各「レコード」は固定数の「フィールド」で構成され、また区別されます。(),,

フィルタは、すべてのSQL文、区切り文字、終了記号などを削除する必要があります。各「フィールド」はカンマまたはタブで区切られ、1行に1つの「レコード」のみを出力する必要があります。

私の考えは完全にマイナーで一般的でなければならず、何度も実装されたはずです。しかし、既存のツールやスクリプトが見つからないようです。

),(私は通常Perlでこの問題をレコード区切り文字として扱って解決しようとします\nが、いつも迷惑な詳細のために泥棒に陥ります。

誰もがこれを行う非常に簡単なスクリプトを持っているか作成できますか? bash、sed、awk、Perl、Pythonなどであれば構いません。

実際の例示データは以下の通りである。行ごとに少数のレコードのみを含めるように変更しました。実際のファイルには、次のファイルに到達して開始する;前に、行/ドアごとに約100万文字があります。

INSERT INTO `categorylinks` VALUES
(0,'Wikisaurus','RunJobs.php','2008-01-27
03:10:30','','','page'),(8,'Wiktionary','TEXT OF THE GNU FREE
DOCUMENTATION LICENSE','2011-01-26
23:50:34','','uppercase','page'),(12,'Wiktionary','WHAT WIKTIONARY IS
NOT\nWHAT WIKTIONARY IS NOT','2011-04-10 18:22:23','What Wiktionary is
not','uppercase','page'),(12,'Wiktionary:Help','WHAT WIKTIONARY IS
NOT\nWHAT WIKTIONARY IS NOT','2011-04-10 18:22:23','What Wiktionary is
not','uppercase','page'); INSERT INTO `categorylinks` VALUES
(2184,'Swedish_nouns','RELIGION','2011-01-06
00:04:41','','uppercase','page'),(2184,'Translations_to_be_checked_(Albanian)','RELIGION','2007-01-27
08:16:34','','uppercase','page'),(2184,'Translations_to_be_checked_(Bulgarian)','RELIGION','2007-01-27
08:16:34','','uppercase','page');

出力は次のとおりです。フィールドが参照されるかどうかは重要ではありません。カンマやタブの区切りは重要ではありません。ただし、コンマは正しくエスケープする必要があります。

 0,'Wikisaurus','RunJobs.php','2008-01-27 03:10:30','','','page'
 8,'Wiktionary','TEXT OF THE GNU FREE DOCUMENTATION LICENSE','2011-01-26 23:50:34','','uppercase','page'
 12,'Wiktionary','WHAT WIKTIONARY IS NOT\nWHAT WIKTIONARY IS NOT','2011-04-10 18:22:23','What Wiktionary is not','uppercase','page'
 12,'Wiktionary:Help','WHAT WIKTIONARY IS NOT\nWHAT WIKTIONARY IS NOT','2011-04-10 18:22:23','What Wiktionary is not','uppercase','page'
 2184,'Swedish_nouns','RELIGION','2011-01-06 00:04:41','','uppercase','page'
 2184,'Translations_to_be_checked_(Albanian)','RELIGION','2007-01-27 08:16:34','','uppercase','page'
 2184,'Translations_to_be_checked_(Bulgarian)','RELIGION','2007-01-27 08:16:34','','uppercase','page'

私が主に使用するデータは、WikipediaとWikiword辞書ダンプの一部です。

ベストアンサー1

これは些細なことです。

1) 輸入SQLSQLデータベースにデータを保存する

2) 既存のSQLツールを使用して目的の形式でデータを出力します。たとえば、OUTFILEとして選択

これは完全にスクリプト可能です。速度が問題の場合は、より速いハードウェア、特にドライブを購入してください。別の言語で解析したい場合は、すべての引用符/中括弧/予約語などを処理するために完全なSQLパーサーを作成する必要があります。これは間違いなく可能ですが、私はこれが些細なことではないと思います。

おすすめ記事