복붙노트

[SQL] 어떻게 엑셀 테이블에 SQL 쿼리를 실행하려면?

SQL

어떻게 엑셀 테이블에 SQL 쿼리를 실행하려면?

나는 모든 성 필드의 또 다른 테이블에서 하위 테이블을 만들 null가 아닌 전화 번호 필드가 A-Z를 소트 노력하고있어. 나는 아주 쉽게 SQL이 할 수있는,하지만 난 엑셀 내에서 SQL 쿼리를 실행에 대한 이동하는 방법을 단서가 없다. 나는 PostgreSQL을에 데이터를 가져 와서 그냥 거기에 쿼리를 유혹하고있어,하지만 그건 좀 지나친 것 같다.

내가 뭘하려는거야 들어, SQL은 PHONENUMBER 트릭을 할 것 LASTNAME BY NULL ORDER가 아닌 성, 이름, PHONENUMBER을 선택 쿼리. 이 Excel에서 기본적으로 할 수없는 뭔가하는 것은 너무 단순 것으로 보인다. 어떻게 엑셀 내에서이 같은 SQL 쿼리를 실행할 수 있습니까?

해결법

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

    1.다른 사람이 이미 suggestioned 한이 작업을 수행하려면 많은 훌륭한 가지 방법이 있습니다. 은 "SQL 트랙을 통해 얻을 Excel 데이터"함께 다음, 여기에 몇 가지 포인터입니다.

    다른 사람이 이미 suggestioned 한이 작업을 수행하려면 많은 훌륭한 가지 방법이 있습니다. 은 "SQL 트랙을 통해 얻을 Excel 데이터"함께 다음, 여기에 몇 가지 포인터입니다.

    === 기타 참고 사항 ===

    기본적으로 Excel 데이터 원본의 첫 ​​번째 행에는 필드 이름으로 사용할 수있는 열 머리글이 포함되어야합니다. 그렇지 않은 경우, 당신은 출발이 설정해야합니다, 또는 데이터의 첫 번째 행이 "사라"필드 이름으로 사용합니다. 이 작업은 연결 문자열의 확장 속성에 설정 = 옵션 HDR을 추가하여 수행됩니다. 지정할 필요가 없습니다 기본값은 예 = HDR입니다. 당신이 열 머리글이 없으면 HDR = 아니오를 지정해야합니다; 공급자 이름 당신의 필드 F1, F2 등

    워크 시트 지정에 대한주의는 : 공급자는 데이터 테이블이 지정된 워크 시트의 왼쪽 상단에있는 비어 있지 않은 셀부터 시작한다고 가정합니다. 즉, 데이터의 테이블은 문제없이, 행 3 열 C를 시작할 수 있습니다. 그러나, 예를 들어, 위 셀 A1에있는 데이터의 왼쪽에 worksheeet 제목을 입력 할 수 없습니다.

    범위를 지정할 때의주의 사항 : 공간이 허용하는 당신이 당신의 레코드 원본으로 워크 시트를 지정하는 경우는, 공급자가 워크 시트에 기존 레코드 아래에 새 레코드를 추가합니다. 당신이 범위 (이름 또는 이름)을 지정하면 Jet 또한 공간이 허용되는 범위 내에서 기존 레코드 아래에 새 레코드를 추가합니다. 원래 범위를 다시 쿼리 경우, 결과 레코드의 범위 밖에 새로 추가 된 레코드가 포함되지 않습니다.

    데이터 유형 테이블 만들기 위해 (가치가 시도) : 짧은, 긴, 싱글, 더블, 통화, 날짜 시간, 비트, 바이트, GUID, BigBinary, LongBinary, VARBINARY, LONGTEXT, VARCHAR, 진수.

    "오래된 기술"엑셀합니다 (XLS의 확장자를 가진 파일)에 연결 : 공급자 = Microsoft.Jet.OLEDB.4.0; 데이터 원본 = C : \ MyFolder에 \ MyWorkbook.xls, 속성 = 엑셀 8.0 확장 ;. Microsoft Excel에서 5.0 및 7.0 (95) 통합 문서의 엑셀 5.0 원본 데이터베이스 형식을 사용 및 Microsoft Excel 8.0 (97), 9.0 (2000) 및 10.0 (2002) 통합 문서에는 Excel 8.0 원본 데이터베이스 형식을 사용합니다.

    "최신"엑셀합니다 (XLSX 파일 확장자를 가진 파일)에 연결 : 공급자 = Microsoft.ACE.OLEDB.12.0; 데이터 소스 = Excel2007file.xlsx; 확장 속성 = "엑셀 12.0 XML을; HDR = YES;"

    텍스트로 데이터를 치료 : IMEX 텍스트로 취급 모든 데이터를 설정. 제공 = Microsoft.ACE.OLEDB.12.0; 데이터 소스 = Excel2007file.xlsx, 속성 = "; HDR = YES; IMEX = 1 엑셀 12.0 XML을"확장;

    (http://www.connectionstrings.com/excel에서 더 많은 세부 사항)

    http://msdn.microsoft.com/en-US/library/ms141683(v=sql.90).aspx에서 더 많은 정보와 http://support.microsoft.com/kb/316934에서

    VBA를 통해 ADODB를 통해 Excel로 연결 http://support.microsoft.com/kb/257819에 설명

    http://support.microsoft.com/kb/275561에서 마이크로 소프트 JET는 4 개 세부 사항

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

    2.다음과 같이 기본적으로이 작업을 수행 할 수 있습니다

    다음과 같이 기본적으로이 작업을 수행 할 수 있습니다

    이 작업을 수행하려면 프로그래밍 난 당신이 매크로 레코더 코드에서 위의 단계 모습을 기록하기 위해 사용하는 것이 좋습니다.

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

    3.TL; DR; 사용 필터 또는 테이블 - 엑셀이 기본적으로 모든 작업을 수행

    TL; DR; 사용 필터 또는 테이블 - 엑셀이 기본적으로 모든 작업을 수행

    (http://office.microsoft.com/en-gb/excel-help/filter-data-in-an-excel-table-HA102840028.aspx)

    당신은 OLEDB 연결을 통해 프로그램 엑셀을 열고 워크 시트에서 테이블에 SQL을 실행할 수 있습니다.

    하지만 당신은 당신이 단지는 필터없이 수식 할 요구하는 모든 것을 할 수 있습니다.

    재생 주위 .. 참고로 몇 가지 있습니다 :

    당신이 그것을 많이 할 예정이나 데이터 어딘가에 또는 뭔가를 가져 오기를 자동화 할 ...하지만 완전성하지 않는 필터와 함께 할 :

    C #을 옵션 :

     OleDbConnection ExcelFile = new OleDbConnection( String.Format( "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=YES\"", filename));
     ExcelFile.Open();
    

    시작하기에 편리한 곳이 더 많은 것이 당신이 생각하는 것보다이있을 수 있으므로 스키마를 살펴하는 것입니다 :

    List<String> excelSheets = new List<string>();
    
    // Add the sheet name to the string array.
    foreach (DataRow row in dt.Rows) {
        string temp = row["TABLE_NAME"].ToString();
        if (temp[temp.Length - 1] == '$') {
             excelSheets.Add(row["TABLE_NAME"].ToString());
        }
    }
    

    당신은 시트를 조회 할 때 :

     OleDbDataAdapter da = new OleDbDataAdapter("select * from [" + sheet + "]", ExcelFile);
     dt = new DataTable();
      da.Fill(dt);
    

    참고 - 엑셀에서 사용 테이블! :

    엑셀이 당신에게 큰 혜택을 제공하지만 당신은 쿼리의 모든 유형을하자 않을 것입니다 .. 메이크업 데이터가 더 테이블처럼 행동하는 것이 "테이블"기능이 있습니다.

    http://office.microsoft.com/en-gb/excel-help/overview-of-excel-tables-HA010048546.aspx

    엑셀에서 테이블 형식의 데이터를 들어이 내 기본입니다 ... 내가 할 첫 번째 일은 다음 리본의 홈 섹션에서 "테이블과 같은 형식"을 선택 데이터로 클릭합니다. 이것은 당신이 필터링, 기본적으로 정렬 제공하고 당신이 이름으로 테이블과 필드를 액세스 할 수 있습니다 (예를 들어, 표는 [필드 명])이 또한 예를 들어, 열을 집계 기능을 할 수 있습니다 최대 및 평균

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

    4.당신은 Excel에서 SQL을 사용할 수 있습니다. 그것은 단지 잘 숨겨져 있습니다. 이 자습서를 참조하십시오 :

    당신은 Excel에서 SQL을 사용할 수 있습니다. 그것은 단지 잘 숨겨져 있습니다. 이 자습서를 참조하십시오 :

    http://smallbusiness.chron.com/use-sql-statements-ms-excel-41193.html

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

    5.나는 QueryStorm에게 시험을주는 것을 제안 할 수 있음 - 그것은 매우 편리 Excel에서 SQL을 사용할 수있게 Excel 용 플러그인입니다.

    나는 QueryStorm에게 시험을주는 것을 제안 할 수 있음 - 그것은 매우 편리 Excel에서 SQL을 사용할 수있게 Excel 용 플러그인입니다.

    또한, 프리미엄 (Freemium)입니다. 당신이 자동 완성, 오류 squigglies 등을 걱정하지 않으면, 당신은 무료로 사용할 수 있습니다. 그냥 다운로드 및 설치, 당신은 Excel에서 SQL 지원합니다.

    면책 조항 : 나는 저자입니다.

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

    6.한 번이 작업을 수행해야하는 경우 단지 찰리의 설명에 따라, 그러나 당신이 필터 동적을 할 경우에 Excel 수식 도우미 열이이 작업을 수행 할 수 있습니다.

    한 번이 작업을 수행해야하는 경우 단지 찰리의 설명에 따라, 그러나 당신이 필터 동적을 할 경우에 Excel 수식 도우미 열이이 작업을 수행 할 수 있습니다.

    당신에게 데이터를 가정하자하면 시트 데이터 시트에 다음과 같은 열 2 행에서 시작 :

    이 장에 두 도우미 열이 필요합니다.

    지금까지 데이터가 간다 이러한 수식을 복사합니다.

    당신의 결과는 다음과 열을 만들 표시됩니다 시트에.

    B2 및 C2와의 아래 수식 복사 D와 E에 열 C를 복사 - 붙여

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

    7.난 그냥 테이블 같은 워크 시트를 처리 할 수 ​​있습니다 좋은 예를 발견했다.

    난 그냥 테이블 같은 워크 시트를 처리 할 수 ​​있습니다 좋은 예를 발견했다.

    비디오 링크

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

    8.당신은 당신의 선택의 언어 / 플랫폼에서 Excel 용 기본 DB 드라이버를 실험 할 수 있습니다. 자바 세계에서는 http://code.google.com/p/sqlsheet/ 직접 엑셀 시트 작업을위한 JDBC 드라이버를 제공하는로 시도 할 수 있습니다. 마찬가지로, 다른 플랫폼에 대한 DB 기술에 대한 드라이버를 얻을 수 있습니다.

    당신은 당신의 선택의 언어 / 플랫폼에서 Excel 용 기본 DB 드라이버를 실험 할 수 있습니다. 자바 세계에서는 http://code.google.com/p/sqlsheet/ 직접 엑셀 시트 작업을위한 JDBC 드라이버를 제공하는로 시도 할 수 있습니다. 마찬가지로, 다른 플랫폼에 대한 DB 기술에 대한 드라이버를 얻을 수 있습니다.

    그러나, 나는 곧이 래퍼 라이브러리가 제공하는 기능의 수와 벽에 부딪 힐 것이라는 점을 보장 할 수있다. 더 나은 방법은 아파치 HSSF / POI 또는 라이브러리의 비슷한 수준을 사용하는 것입니다하지만 노력을 코딩 더 필요합니다.

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

    9.나는 나를 오해 할 수도 있지만이 정확히 피벗 테이블이 무엇을하지? 당신은 테이블하거나 필터링 된 목록에있는 데이터를 가지고 있습니까? 이 경우에 해당하지 않는 표가 온 (CTRL + l)하게되면, 단순히 테이블의 셀을 활성화하고 다른 시트에 피벗 테이블을 삽입한다. 그런 다음 행 섹션에 열 성, 이름, PHONENUMBER를 추가합니다. 그런 다음 필터 섹션에 전화 번호를 추가하고 널 (null) 값을 필터링 할 수 있습니다. 이제 정렬 정상적인있다.

    나는 나를 오해 할 수도 있지만이 정확히 피벗 테이블이 무엇을하지? 당신은 테이블하거나 필터링 된 목록에있는 데이터를 가지고 있습니까? 이 경우에 해당하지 않는 표가 온 (CTRL + l)하게되면, 단순히 테이블의 셀을 활성화하고 다른 시트에 피벗 테이블을 삽입한다. 그런 다음 행 섹션에 열 성, 이름, PHONENUMBER를 추가합니다. 그런 다음 필터 섹션에 전화 번호를 추가하고 널 (null) 값을 필터링 할 수 있습니다. 이제 정렬 정상적인있다.

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

    10.난 당신이 기본적으로 당신이 데이터베이스에 (쉽게 엑셀에서 생성 된) 모든 CSV 파일을로드 해당이되면, 당신은 당신이 원하는 모든 SQL 명령을 사용할 수 있습니다 MySQL의 CSV 스토리지 엔진을 살펴 가지고하는 것이 좋습니다.

    난 당신이 기본적으로 당신이 데이터베이스에 (쉽게 엑셀에서 생성 된) 모든 CSV 파일을로드 해당이되면, 당신은 당신이 원하는 모든 SQL 명령을 사용할 수 있습니다 MySQL의 CSV 스토리지 엔진을 살펴 가지고하는 것이 좋습니다.

    그것은 좀보고 가치가있다.

  11. ==============================

    11.당신이 GDAL / OGR는 국외 거주자 라이브러리에 대한 컴파일있는 경우에, 당신은 프롬프트 명령에서 파일 및 실행 SQL 식을 .XLSX 읽을 수있는 XLSX 드라이버를 사용할 수 있습니다. 예를 들어, 스프레드 시트와 같은 디렉토리에 osgeo4w 쉘에서, 유틸리티 ogrinfo 사용 :

    당신이 GDAL / OGR는 국외 거주자 라이브러리에 대한 컴파일있는 경우에, 당신은 프롬프트 명령에서 파일 및 실행 SQL 식을 .XLSX 읽을 수있는 XLSX 드라이버를 사용할 수 있습니다. 예를 들어, 스프레드 시트와 같은 디렉토리에 osgeo4w 쉘에서, 유틸리티 ogrinfo 사용 :

    ogrinfo -dialect sqlite -sql "SELECT name, count(*) FROM sheet1 GROUP BY name" Book1.xlsx
    

    특이한 형태의 시트 1에 SQLite는 쿼리 및 출력 쿼리 결과를 실행합니다 :

    INFO: Open of `Book1.xlsx'
          using driver `XLSX' successful.
    
    Layer name: SELECT
    Geometry: None
    Feature Count: 36
    Layer SRS WKT:
    (unknown)
    name: String (0.0)
    count(*): Integer (0.0)
    OGRFeature(SELECT):0
      name (String) = Red
      count(*) (Integer) = 849
    
    OGRFeature(SELECT):1
      name (String) = Green
      count(*) (Integer) = 265
    ...
    

    아니면 단순한 CSV 파일을 만들 ogr2ogr 사용하여 동일한 쿼리를 실행합니다 :

    $ ogr2ogr -f CSV out.csv -dialect sqlite \
              -sql "SELECT name, count(*) FROM sheet1 GROUP BY name" Book1.xlsx
    
    $ cat out.csv
    name,count(*)
    Red,849
    Green,265
    ...
    

    오래된 .XLS 파일과 유사한하려면, 당신은 (OSGeo4w에서 예를 들어,하지) 정말 일반적인되지 않습니다 FreeXL 라이브러리에 내장 된 XLS 드라이버를, 필요합니다.

  12. ==============================

    12.Microsoft Access 및 LibreOffice와 자료는 원본과 같은 스프레드 시트를 열고에서 SQL 쿼리를 실행할 수 있습니다. 즉 모든 종류의 질의를 실행하는 가장 쉬운 방법, 그리고 매크로를 실행 중이거나 코드를 작성의 혼란을 피할 것.

    Microsoft Access 및 LibreOffice와 자료는 원본과 같은 스프레드 시트를 열고에서 SQL 쿼리를 실행할 수 있습니다. 즉 모든 종류의 질의를 실행하는 가장 쉬운 방법, 그리고 매크로를 실행 중이거나 코드를 작성의 혼란을 피할 것.

    엑셀은 자동 필터와 예와 같이 간단한 쿼리를 많이 수행하는 것이다 정렬 데이터가 있습니다. 당신이 그 기능과 함께 도움이 필요한 경우, 구글은 나보다 자습서 더 좋은 소스가 될 것입니다.

  13. from https://stackoverflow.com/questions/18798522/how-to-run-a-sql-query-on-an-excel-table by cc-by-sa and MIT license