SQLテーブルにはいくつかのデータが用意されていますが、いくつかのルールに従って変換する必要があります。 しかし、この変換では列名を動的にアドレス指定する必要があります。つまり、値を格納する列の名前自体が他の列などに値として格納されます。 また、値が異なる列の範囲に存在するかどうかによって、 1つの入力行に対して複数の出力行を生成する必要があるので、これは一種の転置です。csvデータの処理と転置のためのスクリプト言語の選択
私は、例を用いてそれを示してみましょう:
id | targetColumnName | col1 | col2 | col3 | col4
-----------------------------------------------------
1 foo 5
2 foo 7 42
3 bar 3 6
4 foo 5
5 bar
6 bar 2 12
これは次のように生成しなければならない:
すなわちid | foo | bar
--------------
1 5
2 7
2 42
3 3
3 6
4 5
6 2
6 12
は、COLX列のいずれかの各現在値のため、出力を生成しますその値をtargetColumnName列で指定された列に追加します。
これは、SQLを全く使用することは、少なくとも単純なクエリを作成することではないと考えています。複合ステートメント/ストアドプロシージャを作成することはおそらく可能ですが、依然として私にとっては間違ったツールのようです。
私はデータもCSV形式ですが、テキスト操作機能を備えた強力なスクリプト言語が仕事に適していると感じていますが、私はPythonの表面を傷つけただけです。私はPerlを知らないちょっとしたawkしかありません。 私はJavaでそれを取り除くことができると知っていますが、これはPythonの魅力的な1ライナーでやっている気がします。 :)
質問が本質的に1)SQL(ite)でこれを行うことは妥当であり、2)他のツールはどんなに良いでしょうか?
これは良い質問ではありません。誰もが別にそれに答えることができる、私はストアドプロシージャのアプローチを好むだろう、他の誰かがJavaアプリケーションを書くだろう。あなたはそのような質問に対して明確な答えを得ることはできません。 – tafa
私はJavaソリューションを求めていません。私はそれを自分で行うことができます。どの言語が良い言語になっているか聞いてみることができますが、私は単に「どちらが最善か」と尋ねるだけではなく、この種の処理に適した言語がどの言語に組み込まれているかを尋ねています。 – JHH