SQL에 임의의(마크업된) 텍스트를 저장하는 정식 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/95459

  •  01-07-2019
  •  | 
  •  

문제

위키/스택오버플로우/등은 무엇을 합니까?텍스트를 저장할 때 어떻게 해야 하나요?텍스트가 개행 문자에서 깨졌나요?고정된 길이의 덩어리로 나누어졌나요?임의로 긴 텍스트 덩어리를 가장 잘 저장하는 방법은 무엇입니까?

도움이 되었습니까?

해결책

nvarchar(최대) ftw.왜냐하면 단순한 일을 지나치게 복잡하게 만드는 것은 나쁘기 때문이죠, 알겠어요?

다른 팁

큰 덩어리의 텍스트를 저장할 수 있는 기능을 제공해야 하고 쿼리할 때 해당 내용을 너무 많이 조사할 수 없어도 괜찮다면 CLob을 사용할 수 있습니다.

이는 모두 사용 중인 RDBMS와 저장하려는 텍스트 유형에 따라 다릅니다.텍스트가 헤더/본문과 같이 그 자체로 무언가를 의미하는 상당한 규모의 데이터 덩어리로 형식화되어 있는 경우 데이터를 이러한 유형의 열로 나눌 수 있습니다.처리 중인 콘텐츠에 따라 이 방법을 사용하려면 여러 테이블이 필요할 수 있습니다.

다른 RDBMS가 이를 어떻게 처리하는지 모르겠지만 각 테이블(text 또는 varchar(max))에 둘 이상의 개방형 열을 갖는 것이 좋지 않다는 것을 알고 있습니다.따라서 하나의 열에만 문자 수에 제한이 없는지 확인하고 싶을 것입니다.

PostgreSQL 관련 - 사용 유형 텍스트 또는 바이티.임의의 청크를 읽어야 하는 경우 고려할 수 있습니다. 대형 물체.

코드에서와 같이 텍스트에 문자열, 따옴표 및 기타 "엉터리" 형식을 유지하는 것에 대해 걱정해야 하는 경우 특수 문자를 먼저 완전히 이스케이프해야 합니다. 그렇지 않으면 db를 제출할 때 끝날 수 있습니다. 잘못된 명령이 실행되도록 합니다.

대부분의 스크립팅 언어에는 기본적으로 이 작업을 수행하는 도구가 내장되어 있습니다.

거래 등이 필요한 경우 텍스트를 저장하려는 위치에 따라 다릅니다.

SQL Server와 같은 데이터베이스에는 긴 텍스트 필드를 저장할 수 있는 유형이 있습니다.SQL Server 2005에서는 긴 유니코드 텍스트 문자열의 경우 주로 nvarchar(max)입니다.데이터베이스를 사용하면 StackOverflow.com과 같은 다른 용도로 데이터베이스를 사용한다고 가정하면 트랜잭션 및 쉬운 백업/복원의 이점을 누릴 수 있습니다.

대안은 텍스트를 디스크의 파일에 저장하는 것입니다.이는 구현이 매우 간단할 수 있으며 데이터베이스를 사용할 수 없거나 과도한 환경에서 작동할 수 있습니다.

데이터베이스나 파일에 저장된 텍스트의 형식과 관련하여 아마도 입력과 매우 유사할 것입니다.HTML이라면 올바르게 이스케이프 처리하는 함수를 통해 푸시하면 됩니다.

기억해야 할 점은 생성부터 저장까지 또는 그 반대로 유니코드나 UTF-8을 사용하고 싶을 수도 있다는 것입니다.이를 통해 추가 언어를 지원할 수 있습니다.이 인코딩 메커니즘에 문제가 있으면 텍스트가 손상됩니다.역사적으로 사람들은 디스크 공간 등을 절약한다는 가정하에 ASCII를 기본값으로 설정했을 수 있습니다.

SQL 서버의 경우:

저장하려면 varchar(max)를 사용하세요.상한은 2GB인 것 같아요.

스스로 텍스트를 벗어나려고 하지 마십시오.적절하게 이스케이프를 수행하는 매개변수화 구조를 통해 텍스트를 전달합니다..Net에서는 SqlCommand에 매개변수를 추가하거나 LinqToSQL을 사용하면 됩니다(그런 다음 SqlCommand를 자동으로 관리함).

StackOverflow가 임의 크기의 '텍스트' 열에 마크다운 형식으로 텍스트를 저장하고 있는 것 같습니다.UTF8일 수도 있습니다(그러나 UTF16 등일 수도 있습니다.나는 그것이 SQL Server라고 추측하는데, 나는 그것에 대해 많이 알지 못합니다.)

일반적으로 가능한 '가장 원시적인' 형식으로 데이터베이스에 항목을 저장하려고 합니다.즉, 모든 디코딩 및 정리 작업을 수행하되 다른 작업은 수행하지 마십시오(예를 들어 Markdown인 경우 HTML로 인코딩하지 말고 원래 '원시' 형식으로 그대로 두십시오).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top