기본 선택 쿼리를 사용하여 데이터베이스에 액세스하고 결과 출력을 파일에 써야 합니다. 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에서도 해결할 수 있습니다. 줄 바꿈은 따옴표가 있는 필드에서만 작동하므로 홀수 개의 따옴표가 있는 줄은 데이터 필드 중간에 있어야 하므로 다시 짝수 개의 따옴표를 얻을 때까지 미리 읽으면 됩니다.