문자열 값에 쉼표가 포함된 데이터를 csv 파일에 쓰는 방법

문자열 값에 쉼표가 포함된 데이터를 csv 파일에 쓰는 방법

기본 선택 쿼리를 사용하여 데이터베이스에 액세스하고 결과 출력을 파일에 써야 합니다. sqlcmd를 사용하여 쿼리를 실행하고 결과를 출력 csv 파일에 씁니다.

Excel에서 이 파일을 열려고 하면 중간에 쉼표가 있는 레코드가 새 열로 나타납니다.

이 문제를 어떻게 극복할 수 있습니까? 쉘 스크립트에서 이를 처리할 수 있나요?

답변1

필요 여부에 관계없이 최소한 데이터베이스의 모든 필드를 참조할 수 있습니다. 이는 여전히 유효한 CSV입니다. Azure에 대해 모릅니다. Oracle에서는 CHR(decimal_code)을 사용하여 특수 문자를 정의하고 || 구분 기호와 데이터를 연결합니다. 따라서 SQL의 필드 구분 기호는 다음과 같습니다 || CHR(34) CHR(44) CHR(34) ||(이것이 제가 awk에서 쿼리를 작성하는 데 사용한 이유입니다).

실망스러운 점은 데이터에 큰따옴표가 포함될 수 있다는 것입니다. 인용된 필드를 두 배로 늘려야 하므로 : Said "Hello".:이 : "Said ""Hello"".":이 되며 이 작업이 더 어렵습니다.

최대 하나의 필드에 쉼표가 포함될 수 있는 문제를 awk에서 수정했습니다. 필드 4는 쉼표를 포함할 수 있는 필드라고 가정합니다. 필드 1-3 및 5-NF를 자르고 필드 4를 완전히 인용한 다음 행을 올바른 CSV로 다시 조합할 수 있습니다. 이것이 도움이 된다면 댓글을 달아주세요.

CSV 필드에 줄 바꿈을 포함할 수도 있으며, 이로 인해 각 행의 열이 엉망이 될 수도 있습니다. 이 문제는 awk에서도 해결할 수 있습니다. 줄 바꿈은 따옴표가 있는 필드에서만 작동하므로 홀수 개의 따옴표가 있는 줄은 데이터 필드 중간에 있어야 하므로 다시 짝수 개의 따옴표를 얻을 때까지 미리 읽으면 됩니다.

관련 정보