雑文発散

«前の日記(2015-08-02) 最新 次の日記(2015-08-04)» 編集
過去の日記

2015-08-03 [長年日記]

[Embulk] embulk-output-mysql の merge モードのカスタマイズをしていた

少し前に「merge モードのときに UPDATE 対象のカラムが限定できる機能」について日記に書いたのだけど、その機能を作ってみている。

この前は ON DUPLICATE KEY UPDATE の構文を組み立てるメソッドに mergeKeys という変数が渡っているので、そいつを使っちゃえば良いのでは?と思いつつも embulk-output-postgresql での使われ方が違う気がしていて、そういう意図の変数じゃないなという感触を得ていたので、別の設定を使ってみることにした。

column_options という設定があったので、そこにキーワード skip_update を新たに作り、その値が true だった場合に ON DUPLICATE KEY UPDATE 以下のカラム指定から外すようにしてみている。

out:
  type: mysql
  [snip]
  mode: merge_direct
  column_options:
    created_at: {skip_update: true}

merge_direct モードで通常発行される下記のクエリ(以前の日記と同じもの)のがあるとして、

INSERT INTO ramen (
  name,
  location,
  created_at,
  updated_at)
VALUES (
  'しじみラーメン和歌山',
  '青森',
  '2015-07-19',
  '2015-07-19' )
ON DUPLICATE KEY UPDATE
  name = VALUES(name),
  location = VALUES(location),
  created_at = VALUES(created_at), -- <= here
  updated_at = VALUES(updated_at)
;

前述の設定をした場合には、このようなクエリが発行されるイメージ。

INSERT INTO ramen (
  name,
  location,
  created_at,
  updated_at)
VALUES (
  'しじみラーメン和歌山',
  '青森',
  '2015-07-19',
  '2015-07-19' )
ON DUPLICATE KEY UPDATE
  name = VALUES(name),
  location = VALUES(location),
  updated_at = VALUES(updated_at)
;

いちおう動いている気はするけど、自分のコードには自信がないので、もう少しテストをしたいところ。残念ながら embulk-output-mysql にはテストケースが用意されていないので、最初から自分で書くしかないんだよなぁ。

embulk-output-oracle にはテストケースがあるので、それを真似て書けると良いんだけど。

本日のツッコミ(全4件) [ツッコミを入れる]
CharlesDes (2026-07-12 07:25)

Детоксикация от наркотиков в частной клинике — это сложный медицинский процесс, который требует обязательной госпитализации. В нашей клинике детоксикация от наркотиков обычно занимает 7-14 дней, лечение проходит только в стационаре. Это необходимо, чтобы круглосуточно контролировать состояние пациента, своевременно корректировать терапию и полностью исключить возможность срыва. Наши врачи-наркологи (в том числе Викторович, Юрьевич, Евгений Анатольевич, Марина, Татьяна, Ольга, Наталья Валерьевна, Андрей) и психиатры разрабатывают индивидуальную программу лечения, учитывая тип употребляемого вещества, длительность зависимости, возраст и общее состояние здоровья больного. Лечебно-реабилитационные мероприятия включают не только медикаментозную терапию, но и подготовку к дальнейшей психологической работе. При необходимости привлекается реаниматолог, терапевт, проводится ЭКГ и лабораторная диагностика. <br>Углубиться в тему - https://detoksikaciya-narkomanov-moskva13-1.ru/detoksikaciya-ot-narkotikov-na-domu-moskva/

CharlesBax (2026-07-17 05:00)

Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев. <br>Получить дополнительные сведения - https://narkolog-na-dom-v-novorossijske3.ru

1xbet guncel giris_ripl (2026-07-20 23:12)

Herkes dinlesin Oranlar düşük, bonuslar sahte Paramı geri alamadım Ama sonunda bu siteyi keşfettim — 1xbet güncel giriş burada Her gün yeni bonus ve promolar var Kısacası, kaybetmeyin diye tıkla — 1xbet güncel giriş [url=https://1xbet-guncel-giris-rmf.com]1xbet güncel giriş[/url] Tek adres 1xbet güncel giriş Bahis yapan herkese gönder

mostbet_ezki (2026-07-22 10:03)

Народ, кто реально ставит? А служба поддержки молчит как рыба и не отвечает. Искал реально долго, перепробовал кучу сомнительных вариантов пока чисто случайно не нашел наконец толковую рабочую платформу, и предлагает топовые условия как для ординаров, так и для экспрессов. Всё летает как часы в любое время суток, <br> <br>Кому тоже актуально найти проверенное место для игры, там расписаны все технические подробности мостбет kg [url=https://mostbet-psa.com.kg]мостбет kg[/url] Данный сервис сейчас реально рулит на рынке, обязательно перешлите этот пост тому, кто тоже сейчас ищет нормальную контору!