質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Spring Batch

Spring Batchは、バッチ処理向けに定義されたオープンソースのフレームワーク。エンタープライズシステムで避けて通れないバッチ処理を可能にします。設定ファイルに別定義することで効率よく開発することがで可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

解決済

1回答

2270閲覧

バッチでCSV2つを結合しwhereなどの絞り込みを行い出力する方法を知りたい。

dendenmushi

総合スコア98

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Spring Batch

Spring Batchは、バッチ処理向けに定義されたオープンソースのフレームワーク。エンタープライズシステムで避けて通れないバッチ処理を可能にします。設定ファイルに別定義することで効率よく開発することがで可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

0クリップ

投稿2020/08/25 02:31

編集2020/08/25 04:10

前提・実現したいこと

Linuxにてcronを使用しshバッチで2つのcsvをlefter joinでかつwhereで条件指定してデータを取得したい。
最終的に出力されたものは既存のmariaDBにインサートすることになります。

具体的に実現したいこと

a.csvの中身(テーブルではありません。)

ID商品名産地
2176ちんすこうショコラ沖縄
4116うまい棒スペシャルチョコ茨城
7896バナナアイスクリーム東京

b.csvの中身(テーブルではありません。)

ID発売開始日ランキング上位flag
21762020/08/250
41162020/07/251
78962020/08/011

出力しDBにインサートしたいものは、ランキング上位フラグが1である方の商品名と産地になります。

方法2つ

①csvをバッチによってa.csvが入るテーブルを定義しておき、(b.csvも)、SQLのlefterJoinで結合してから出力する。

②shにてCSVの結合ができるjoinコマンドを使用しIDをキーに結合し、flag1の方だけ絞って出力する。

質問

②の方法で行いたいです。テーブルを定義すれば確実ですが、大変なため、CSV結合でshでできるのであれば実現したいと思いました。しかし、whereに相当するflagが1である分別がjoinコマンドのオプションに存在するのか知りたかったのですが、ご存じの方教えて頂けないでしょうか。

該当のソースコード

sh

1join -t, -a 1 -1 1 -2 1 -o 0 1.2 2.2 -e 'NULL' b.csv a.csv

,を区切り文字にする区切り文字 → -t,
キーにするフィールド → -1 x : 1つ目のファイルの第xフィールドを用いてjoinする

これによってIDをキーにできました。しかし、flagが1であることを条件にする方法が見当たりませんでした。

どなたかご存じの方、アドバイス頂けないでしょうか。よろしくお願い致します。

補足情報(FW/ツールのバージョンなど)

linux aws ec2
mariaDB10.2(my sql)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikedas

2020/08/25 03:15

joinというコマンドはSQLとは関係ないです。たしかにINNER JOINに似たようなことはできそうですが。まず、joinのマニュアルページを見て使いかたを調べてみてください。「man join」というコマンドでjoinのマニュアルページが見られると思います (なお、少し古そうですが日本語訳もあります: https://linuxjm.osdn.jp/html/gnumaniak/man1/join.1.html )。 あと、ご質問の内容全体についてですが、 ・MariaDBのバージョンを書くのなら正確に書いて下さい。1.2というバージョンはないと思います。 ・JavaやSpringBootはこのご質問で行う作業に関係がないように思います。
dendenmushi

2020/08/25 04:09

ご指摘ありがとうございます。失礼しました。ver10.2になります。springbootなど削除致します。
guest

回答1

0

自己解決

申し訳ありません。私が壮大な勘違いをしておりました。Datatableにより列のflag選定を行えるということで解決しました。大変お騒がせ致しました。

投稿2020/08/25 04:11

dendenmushi

総合スコア98

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問