52 lines
1.6 KiB
MySQL
52 lines
1.6 KiB
MySQL
|
|
-- =============================================================================
|
||
|
|
-- Bereinigt umschließende Markdown-Code-Fences (```markdown ... ```) aus der
|
||
|
|
-- Spalte TRANSLATED_TEXT in DC_PROJECT_DOCUMENTS.
|
||
|
|
--
|
||
|
|
-- Hintergrund: Das Übersetzungs-Modell hat den Text mal mit, mal ohne Fence
|
||
|
|
-- gespeichert. Der Backend-Code strippt den Fence ab jetzt beim Schreiben;
|
||
|
|
-- dieses Skript bereinigt die bereits vorhandenen Altdatensätze.
|
||
|
|
--
|
||
|
|
-- Idempotent: Datensätze ohne führenden ``` bleiben unverändert.
|
||
|
|
-- =============================================================================
|
||
|
|
|
||
|
|
SET SERVEROUTPUT ON
|
||
|
|
|
||
|
|
DECLARE
|
||
|
|
v_count PLS_INTEGER := 0;
|
||
|
|
v_text CLOB;
|
||
|
|
v_nl PLS_INTEGER;
|
||
|
|
BEGIN
|
||
|
|
FOR rec IN (
|
||
|
|
SELECT id, translated_text
|
||
|
|
FROM dc_project_documents
|
||
|
|
WHERE translated_text IS NOT NULL
|
||
|
|
AND LTRIM(translated_text) LIKE '```%'
|
||
|
|
) LOOP
|
||
|
|
v_text := LTRIM(rec.translated_text);
|
||
|
|
|
||
|
|
-- Erste Zeile (z. B. ```markdown) entfernen
|
||
|
|
v_nl := INSTR(v_text, CHR(10));
|
||
|
|
IF v_nl > 0 THEN
|
||
|
|
v_text := SUBSTR(v_text, v_nl + 1);
|
||
|
|
END IF;
|
||
|
|
|
||
|
|
-- Schließendes ``` am Ende entfernen
|
||
|
|
v_text := RTRIM(v_text);
|
||
|
|
IF SUBSTR(v_text, -3) = '```' THEN
|
||
|
|
v_text := SUBSTR(v_text, 1, LENGTH(v_text) - 3);
|
||
|
|
END IF;
|
||
|
|
|
||
|
|
v_text := TRIM(v_text);
|
||
|
|
|
||
|
|
UPDATE dc_project_documents
|
||
|
|
SET translated_text = v_text
|
||
|
|
WHERE id = rec.id;
|
||
|
|
|
||
|
|
v_count := v_count + 1;
|
||
|
|
END LOOP;
|
||
|
|
|
||
|
|
COMMIT;
|
||
|
|
DBMS_OUTPUT.PUT_LINE('Bereinigte Datensätze: ' || v_count);
|
||
|
|
END;
|
||
|
|
/
|