Ich habe eine sehr große Datenbank von sozialen Medien bevölkert. Ich versuche eine neue Spalte zu erstellen, um JSON für word_counter für schnellere Analysen zu erstellen.Escaping Zeichen in PostgreSQL
Ich erstelle zuerst eine Funktion in PostgreSQL, um ein String-Array zu nehmen, die Vorkommnisse zu zählen und einen Jsonb zurückzugeben, der eingefügt wird. Hier ist die folgende Funktion
CREATE
OR REPLACE FUNCTION count_elements (TEXT []) RETURNS JSONB AS $$
DECLARE js JSONB := '{}' ;
DECLARE jjson JSONB ;
BEGIN
SELECT
jsonb_agg (
(
'{"' || i|| '":"' || C || '"}'
) :: JSONB
) INTO jjson
FROM
(
SELECT
i,
COUNT (*) C
FROM
(SELECT UNNEST($1 :: TEXT []) i) i
GROUP BY
i
ORDER BY
C DESC
) foo ; RETURN jjson ;
END ; $$ LANGUAGE plpgsql;
Hier ist das Problem. Wenn Sie die folgende Abfrage ausgeführt
select count_elements(string_to_array(lower(tweet_text), ' ')),tweet_text from tweet_database
limit 10
Ich erhalte diesen Fehler
[Err] ERROR: invalid input syntax for type json
DETAIL: Character with value 0x0a must be escaped.
CONTEXT: JSON data, line 1: {"winning?
SQL statement "SELECT
Ich versuchte, die Säule zu entkommen, und dann regex einige der Elemente zu ersetzen, aber es ist noch nicht gearbeitet hat.
'to_json' für Sie entkommen wird ausführen. – teppic