2014-09-16 3 views
2

나는 데이터베이스에 쿼리 0120-의 query_config 테이블을 가지고 있습니다. 여기에는 쿼리 용 스크립트와 다른 구성 값이 포함되어 있습니다. 이것이 json 유형을 사용하는 이유입니다. 내가 예를 들어 삽입 할이 표에서postgresql 텍스트를 json으로 변환

CREATE TABLE query_config 
(
   id integer, 
   execute_query json 
); 

: 표는 다음과 같이

INSERT INTO query_config(id, execute_query) 
    VALUES (4, ('{"query": ' || 
    '"select * 
    from tests 
    where tests.id > 5 
    order by moment desc"}')::json); 

을하지만 오류가 계속 :

ERROR: invalid input syntax for type json 
DETAIL: Character with value 0x0a must be escaped. 

내가 잘못하시기 바랍니다 일을 어떻게하고 무엇을 줄 바꿈 문자를 벗어나나요?

답변

1

당신이, 즉, 새로운 라인을 제거 같은 한 줄에 JSON 값을 넣으면 작동합니다 : 그래서 어떤 텍스트를 삼킬 것이다 그것을 유효 JSON과 dollar quoting를 만들기 위해

INSERT INTO query_config(id, execute_query) 
    VALUES (4, ('{"query":' || '"select * from tests where tests.id > 5 order by moment desc"}')::json); 
+0

예에 쉽게 그냥, 그것은 선택 사항이지만,이해야 할 수도 있습니다 저장하는 코드가 변경 될 따라서 나는 계속 줄 바꿈을합니다. – peterko

4

사용 to_json 쿼리

select format('{%s: %s}', 
    to_json('query'::text), 
    to_json($query$ 
     select * 
     from tests 
     where tests.id > 5 
     order by moment desc 
    $query$::text) 
)::json; 
                 format               
--------------------------------------------------------------------------------------------------------------------- 
{"query": "\n  select *\n  from tests\n  where tests.id > 5\n  order by moment desc\n "} 

http://www.postgresql.org/docs/current/static/functions-json.html#FUNCTIONS-JSON-TABLE

http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS

가 포맷 기능이 눈

http://www.postgresql.org/docs/current/static/functions-string.html#FUNCTIONS-STRING-OTHER