복붙노트

[SQL] CSV (필요 인용과 이스케이프)에 SQL Server Express의 데이터를 내보내기

SQL

CSV (필요 인용과 이스케이프)에 SQL Server Express의 데이터를 내보내기

나는 SQL 서버 설치에서 사용자가 입력 한 데이터의 큰 텍스트 필드를 포함하는 75,000 행 테이블을 내보낼려고 이일 보냈다. 이 데이터는 모든 일반 ASCII 문자, 탭, 줄 바꿈이 포함되어 있습니다. 나는 모든 필드가 인용 수출 CSV 필요하고, 인용 열에서 따옴표가 제대로 ( "") 이스케이프됩니다.

여기에 지금까지 시도한 것입니다 : - 관리 스튜디오에서 데이터베이스 및 Excel로 내보내기를 마우스 오른쪽 버튼으로 클릭 : 필드가 너무 오래되고로 인해 실패합니다. - 텍스트 구분 쉼표 분리 "플랫 파일로 관리 Studio에서 데이터 내보내기 - 완전히 쓸모는 파일이 완전히 모호하게 필드에서 따옴표를 이스케이프하지 않습니다. - 명령 줄에서 BCP - 또한 인용 필드를 지원하지 않습니다.

나는 FasterCSV 루비 라이브러리를 가져와야합니다. 그것은 인용 구분 기호가 아닌 표준 ASCII 문자 또는 둘 이상의 문자가 될 수 없습니다. 또한 인용 부호가 열에 \ n 또는 \ 연구를 허용하지 않습니다.

어떤 도움도 대단히 감사합니다.

해결법

  1. ==============================

    1.그것은 수행 할 수 있습니다! 그러나 당신은 어떤 바보의 이유로 기본이 아니기 때문에 특별히 구성 SSMS가 인용 출력을 사용합니다.

    그것은 수행 할 수 있습니다! 그러나 당신은 어떤 바보의 이유로 기본이 아니기 때문에 특별히 구성 SSMS가 인용 출력을 사용합니다.

    쿼리 창에서 쿼리로 이동을 저장할 -> 쿼리 옵션 ...

    상자 ".CSV 결과를 저장할 때 목록 구분 기호를 포함하는 인용 문자열을"확인하십시오.

    그때

    select 'apple,banana,cookie' as col1,1324 as col2,'one two three' as col3,'a,b,"c",d' as col4
    

    가 출력됩니다

    col1,col2,col3,col4
    "apple,banana,cookie",1324,one two three,"a,b,""c"",d"
    

    우리 모두가 원하는이다.

  2. ==============================

    2.나뿐만 아니라이 문제를 알아 내기 위해 노력했습니다. 확실하지 테이블이 나보다 훨씬 더 큰, 그러나 이것이 내가 그냥 충동의 한 일이기 때문에이 당신을 위해 작동하는지 :

    나뿐만 아니라이 문제를 알아 내기 위해 노력했습니다. 확실하지 테이블이 나보다 훨씬 더 큰, 그러나 이것이 내가 그냥 충동의 한 일이기 때문에이 당신을 위해 작동하는지 :

    나는 그것이 아마 바보 같은 소리로 들리 겠지만 실제로 날 위해 일했습니다.

  3. ==============================

    3.가장 쉬운 방법은이 작업을 수행합니다 :

    가장 쉬운 방법은이 작업을 수행합니다 :

    엑셀 데이터 가져 오기 도구를 사용하여

    그런 다음 CSV 파일로 가져온 데이터를 저장합니다. 쿼리를 내보내려면 다음보기로 쿼리를 저장

  4. ==============================

    4.여기에 바로이 작업을 수행하는 스크립트 I 사용의 본질이다 :

    여기에 바로이 작업을 수행하는 스크립트 I 사용의 본질이다 :

    require 'rubygems'
    require 'active_record'
    require 'tiny_tds'
    require 'activerecord-sqlserver-adapter'
    require 'acts_as_reportable'
    require 'ruport'
    
    ActiveRecord::Base.logger = Logger.new("log/debug.log")
    ActiveRecord::Base.establish_connection(
      :adapter    => 'sqlserver',
      :mode       => 'dblib',
      :dataserver => 'servername',
      :username   => 'username',
      :password   => 'password',
      :timeout    => '60000'
    )
    
    class Table1 < ActiveRecord::Base
      set_table_name 'table_name'
      set_primary_key 'table_id'
      acts_as_reportable
    end
    
    Table1.report_table(:all).save_as("finished/table1.csv")
    

    희망이 도움이!

  5. ==============================

    5.필자가 발견 한 가장 간단한 해결 방법은 쿼리에 따옴표를 추가하는 것입니다;

    필자가 발견 한 가장 간단한 해결 방법은 쿼리에 따옴표를 추가하는 것입니다;

    SELECT '"'+MYCHARACTERDATA+'"' FROM MYTABLE
    

    스프레드 시트는 다음과 같은 이국적인 문자를 사용할 수있는 사용자 정의 텍스트 한정자를 사용할 수있는 경우 | 텍스트에 따옴표를 방지 할 수 있습니다.

    Daft..SSMS 인용 텍스트 필드 및 그 분야에서 올바르게 이스케이프 따옴표 적절한 CSV로 내 보내야합니다.

  6. ==============================

    6.아무도이 프로세스에 대해 SSIS (SQL Server 통합 서비스)를 사용하여 제안하지 왜 궁금 해요? SSMS에서 (SQL Server 관리 Studio)에서 가져 오기 / 내보내기를위한 마법사와 모든 도구는 절대적으로 포괄적 수 없습니다 (그리고 그들은 확실히, 그리고 예, Microsoft는 제한 사항에 대한 답변을해야하는 많은이된다 ). 그러나 SSIS 정확히 이와 같은 문제를 해결하기 위해 설계된 매우 완전한 기능을 갖춘 ETL 도구입니다. 곡선을 배우는 것은 약간 가파른 될 수 있지만 특히 어려운 일이 아니다 쉼표 / ​​인용 컬럼 식별자가 CSV 파일에 테이블을 내보낼 수 있습니다.

    아무도이 프로세스에 대해 SSIS (SQL Server 통합 서비스)를 사용하여 제안하지 왜 궁금 해요? SSMS에서 (SQL Server 관리 Studio)에서 가져 오기 / 내보내기를위한 마법사와 모든 도구는 절대적으로 포괄적 수 없습니다 (그리고 그들은 확실히, 그리고 예, Microsoft는 제한 사항에 대한 답변을해야하는 많은이된다 ). 그러나 SSIS 정확히 이와 같은 문제를 해결하기 위해 설계된 매우 완전한 기능을 갖춘 ETL 도구입니다. 곡선을 배우는 것은 약간 가파른 될 수 있지만 특히 어려운 일이 아니다 쉼표 / ​​인용 컬럼 식별자가 CSV 파일에 테이블을 내보낼 수 있습니다.

    http://www.microsoft.com/en-us/download/details.aspx?id=42313 : 패키지를 만들 dev에 환경을하기 위해 비주얼 스튜디오에서이 부가 기능을해야 할 수도 있습니다 (링크는 VS 2013 년, 다른 링크 VS의 다른 버전을 사용할 수 있습니다)입니다.

  7. ==============================

    7.아마 아래 링크는 당신을 도울 수 있습니다 :

    아마 아래 링크는 당신을 도울 수 있습니다 :

    SQL 서버 2005 익스프레스 가져 오기 / 내보내기 데이터

  8. ==============================

    8.로버트 칼혼의 솔루션은 나를 위해 작동하지 않았다. 우리는 쉼표와 캐리지 리턴 / 줄 바꿈 등으로 텍스트를 많이했다 우리는 위의 크리스 크리스토의 솔루션에 대한 몇 가지 변경 사항으로 내보내기 기능을 사용했다.

    로버트 칼혼의 솔루션은 나를 위해 작동하지 않았다. 우리는 쉼표와 캐리지 리턴 / 줄 바꿈 등으로 텍스트를 많이했다 우리는 위의 크리스 크리스토의 솔루션에 대한 몇 가지 변경 사항으로 내보내기 기능을 사용했다.

    SQL Management Studio에서 마우스 오른쪽 데이터베이스를 클릭하고 작업을 선택 -> 데이터 내보내기.

    그런 다음 대상으로 소스와 플랫 파일로 SQL Server를 선택합니다. 파일 MyFile.csv의 이름을 지정합니다.

    "와 같은 텍스트 한정자를 설정

    선택하고 쿼리에 붙여 넣기 '데이터 전송을 지정하는 쿼리를 작성합니다'. 당신은 기본값으로 다음 설정을 남길 수 있습니다.

    엑셀 형식으로 Excel에서 열기 및 저장 내 보낸 데이터로.

  9. ==============================

    9.내가 가지고 올 수있는 가장 좋은 방법은 모든 행을 선택하고 XML에 관한 사본을하는 것입니다.

    내가 가지고 올 수있는 가장 좋은 방법은 모든 행을 선택하고 XML에 관한 사본을하는 것입니다.

    메모장 파일에 붙여 넣하고 XML 파일로 저장합니다. 다음 Excel 및 짜잔에서 해당 XML 파일을 엽니 다! 내 파일을 가지고 어떻게이어야.

  10. ==============================

    10.우리는이 대답에, 적절한 CSV로 CSV "깨진"SSMS 변환을 찾을 수있는 작은 스크립트를했다 :

    우리는이 대답에, 적절한 CSV로 CSV "깨진"SSMS 변환을 찾을 수있는 작은 스크립트를했다 :

    https://stackoverflow.com/a/46876236/1532201

  11. from https://stackoverflow.com/questions/7382846/exporting-data-from-sql-server-express-to-csv-need-quoting-and-escaping by cc-by-sa and MIT license