0

現在、パイプで区切られたテキストで構成される特定のログがあり、その形式は次のとおりです。

field1:value1|field2:value2|...|fieldN:valueN\n
field1:value1|field2:value2|...|fieldN:valueN\n
etc.

現在、各行の先頭からいくつかの単語を削除し、結果のテキスト ファイルに対して mysqlimport を実行するインポーター スクリプト (perl を実行してから mysqlimport を実行する bash) があります。

JSON を出力するデータ サービスにログをアップグレードしています。インポーター スクリプトは引き続き、その JSON のコンテンツを MySQL データベース テーブルにインポートします。素敵な JSON をパイプ区切りのファイルに変換して mysqlimport で使用するのは悪い形式のように感じますが、何かオプションはありますか? mysql のドキュメントやフォーラムには何も見つかりませんでした。

4

2 に答える 2

0

ただの友好的な批判:私にとって、変換するのは悪いことです:

  • json テキスト文字列 -> パイプ区切りデータへ -> パイプ区切りパーサーへ -> データベースへ または
  • json テキスト文字列 -> パイプ区切りデータへ -> パイプ区切りパーサーへ -> 配列へ -> データベースへ。

パイプ区切りは、json 文字列よりもサポートが少なくなります。

これを行う最善の方法は、json 文字列でデータを維持することです。

次に、使い慣れたプログラミング言語で解析できます。たとえば、配列に入れます。次に、各配列をデータベースに保存します。

しかし、これがあなたの会社が使用しているものであり、彼らがすでにパイプ区切りのパーサーを持っている場合、彼らがすでに構築している場合、またはあなたがそれを提案するのが難しい場合 (彼らを説得する不可能な方法の場合はどうであれ)。次に、最善の方法は、しばらくそのままにしておくことです。

自分で時間があれば、自分で構築することができます

  • jsonパーサー→配列へ→データベースアプリへ。
  • json パーサー -> データベース アプリケーションへ。(キーと値に基づく)

それは簡単です。

于 2012-12-11T19:30:40.230 に答える
0

堅実なJSONを、mysqldump互換のSQL複数行insertステートメントである同等に堅実なものに変換したいと思います。

VALUES 構文を使用する INSERT ステートメントは、複数の行を挿入できます。これを行うには、列値の複数のリストを含め、それぞれを括弧で囲み、カンマで区切ります。例:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

とにかく Perl スクリプトを使用しているので、これは大きな問題にはなりません。

于 2012-12-11T19:36:44.970 に答える