BULK INSERT
을 사용하여 가져 오기를 시도하는 CSV 파일이 있습니다. 문제는 텍스트 내에 쉼표가 있으면 쉼표가없는 경우 따옴표로 묶지 않고 인용 부호로 묶을 필드가 있다는 것입니다. 추가 쉼표가 있으면 삽입하는 동안 잘못된 열 개수로 인해 SQL Server에서 오류가 발생합니다. 당신이 볼 수 있듯이, 세 번째 행은 주소 필드에서 쉼표, 따라서 주소 필드가 인용을 포함SQL Server 조건부 대체 CSV 데이터
928 Riata Dr,Magnolia,TX,77354,4/15/2014
22 Roberts Ave.,McKinney,TX,75069,4/15/2014
"5531 Trinity Place, #22",San Antonio,TX,78212,4/15/2014
: 여기
는 샘플 데이터 집합입니다.BULK INSERT
명령이이 때문에 오류를 던지고 있기 때문에 파일 내용을로드하기 전에 내용을 제거해야한다고 가정합니다. 누군가가 내용을 읽어 나는 (SQL과) 파일을 열 필요가 파일 내용을, 스크럽, 내부 쉼표의 조건 교체를 할 수있는 더 나은 솔루션
을하지 않는
(내에서 발견 따옴표). 그 쉼표가 실제로 존재할 필요가 없기 때문에, 나는 단지 ''(공백)로 바꿀 수 있습니다.
그런 다음 원하지 않는 다른 문자를 바꾸기 위해 데이터를 가져온 후에 별도로 따옴표를 처리 할 수 있습니다.
나는 논리가 소리라고 생각한다. 문제는 구문이다. SQL Server에서 REGEX와 관련된 구문을 찾을 수없는 것 같습니다 (Booo Microsoft). 어떤 경우 쉼표가 따옴표 안에 들어 있는지 확인하고 다른 경우에는 따옴표로 바꿀 수 있습니다.
의견, 제안, 코드 등 무엇입니까?
미리 감사드립니다.
빠른 답장을 보내 주셔서 감사합니다. 자동화를 위해 프로그래밍 방식으로이 작업을 수행하려고합니다. 이것은 수동으로 실행하고 싶지 않은 일일 작업입니다. 당신의 해결책은 효과가 있습니다. 그러나 매일 파일을 수동으로 터치하고 싶지는 않습니다. – sadmicrowave
아, 알겠습니다, 전적으로 이해합니다. 그래서이 게시물에 대한 가장 최근의 답변은 예를 들어, 탭으로 구분 된 가져 오기 이외의 다른 대답이 없다는 것입니다. http://stackoverflow.com/questions/21226107/sql-server-bulk-insert-csv -with-data-having-comma는 SQL이 CSV 파일을 직접 지원하지 않기 때문에 (즉, 거기에 몇 가지 다른 대답이있을 수 있습니다.) 어떤 이유로 든이 .Net 솔루션을 구현하기로 결정한 경우, LumenWorks CSV 리더기가 최근 성공을 거두었습니다. 그 외에도 내가 어떤 도움이 될지 모르겠습니다. – JackArbiter