파일 형식 데이터 소스

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 소요 시간: 13분
  • 경로 및 인증 정보를 제공하여 로컬 소스, 원격 네트워크 서버 또는 다른 인스턴스에서 파일을 임포트합니다.

    파일 유형 임포트 세트의 경우 파일 검색 방법 목록(SFTP, FTP, FTPS, HTTP, HTTPS 및 SCP)에서 선택할 수 있습니다.
    주:
    FTPS는 일부 방화벽 공급업체에서 더 이상 지원하지 않으므로 권장되지 않습니다. SFTP를 대안으로 사용하는 것이 좋습니다.

    파일 검색 방법

    다음 파일 검색 방법으로 파일이 상주하는 위치에서 ServiceNow로 파일을 복사하여 임포트 세트에 로드할 수 있습니다.

    임포트와 호환되는 파일을 정의한 후 파일을 임포트할 수 있는 방법을 정의합니다.

    주:
    가져오기에 성공하려면 FTP 서버 및 클라이언트가 여기에서 선택한 것과 동일한 인증 메커니즘에 대해 설정되어야 합니다.
    방법 설명
    첨부 파일 기록에 파일을 첨부 파일 추가 및 관리하고 임포트 세트에서 해당 파일을 임포트합니다.
    SFTP SFTP를 사용하여 파일을 검색합니다. 서버 이름 및 로그인 자격 증명에 대한 필드가 제공됩니다.
    FTP 네트워크의 FTP 서버에서 파일을 검색합니다. 서버 이름 및 로그인 자격 증명에 대한 필드가 제공됩니다.
    주:
    FTP 전송은 일반 텍스트로 전송되며 암호화할 수 없습니다. 가능하면 SCP 또는 SFTP를 대신 사용합니다.
    FTPS(인증 SSL)[권장하지 않음] 일부 방화벽 공급업체에서는 FTPS를 더 이상 지원하지 않으므로 권장하지 않습니다. SFTP를 대안으로 사용하는 것이 좋습니다.

    SSL(Secure Socket Layer) 프로토콜을 통해 실행된 FTP 보안 인증 명령입니다. 이 방법은 SSL을 통한 명시적 FTP라고도 합니다.

    FTPS(인증 TLS)[권장하지 않음] 일부 방화벽 공급업체에서는 FTPS를 더 이상 지원하지 않으므로 권장하지 않습니다. SFTP를 대안으로 사용하는 것이 좋습니다.

    TLS(전송 계층 보안) 프로토콜을 통해 실행된 FTP 보안 인증 명령입니다. 이 방법을 TLS를 통한 명시적 FTP라고도 합니다.

    FTPS(암시적 SSL)[권장하지 않음] 일부 방화벽 공급업체에서는 FTPS를 더 이상 지원하지 않으므로 권장하지 않습니다. SFTP를 대안으로 사용하는 것이 좋습니다.

    암시적 보안에서 FTPS 서버는 클라이언트(990)가 보안 연결에 사용할 특정 포트를 정의합니다. 암시적 보안은 FTPS 클라이언트가 FTPS 서버에 연결하는 순간 SSL 연결로 자동으로 시작됩니다.

    FTPS(암시적 TLS)[권장하지 않음] 일부 방화벽 공급업체에서는 FTPS를 더 이상 지원하지 않으므로 권장하지 않습니다. SFTP를 대안으로 사용하는 것이 좋습니다.

    암시적 보안에서 FTPS 서버는 클라이언트(990)가 보안 연결에 사용할 특정 포트를 정의합니다. 암시적 보안은 FTP 클라이언트가 FTP 서버에 연결하는 순간 TLS 연결로 자동으로 시작됩니다.

    HTTP HTTP를 사용하여 파일을 검색합니다. 서버 이름 및 로그인 자격 증명에 대한 필드가 제공됩니다.
    중요사항:
    HTTP 및 HTTPS 프로토콜의 경우 파일 경로는 자동으로 URL로 인코딩됩니다. 이러한 프로토콜 중 하나를 사용할 때 URL로 인코딩된 파일 경로를 지정하지 마십시오.
    HTTPS HTTPS를 사용하여 파일을 검색합니다. 서버 이름 및 로그인 자격 증명에 대한 필드가 제공됩니다. 이 방법을 사용하여 ServiceNow 인스턴스 간에 데이터를 전송합니다.
    SCP SCP(Secure Copy 프로토콜)는 SSH(Secure Shell) 프로토콜을 사용하여 로컬 호스트와 원격 호스트 간 또는 두 원격 호스트 간에 파일을 안전하게 전송합니다.

    파일 데이터 소스 예제

    이 예제에서는 다양한 파일 형식을 데이터 소스로 가져오는 방법에 대해 설명합니다.

    Excel 데이터 소스 파일

    XLSX 형식과 레거시 XLS 형식을 모두 사용하여 임포트할 수 있습니다. XLS는 버전 2003 이하용 Excel에서 만든 스프레드시트의 기본 형식입니다. XLSX는 Excel 2007 이상의 기본 형식입니다. 최적의 성능을 위해 가능하면 기존 XLS 대신 XLSX를 사용합니다.

    주:
    • 모든 .xls 파일은 1904 날짜 시스템이 아닌 1900 날짜 시스템을 사용해야 합니다. 1904 날짜 시스템을 사용하면 스프레드시트에 표시된 연도보다 4년 빠른 연도로 날짜를 가져올 수 있습니다. 날짜 체계에 대한 자세한 내용은 MS 지원을 참조하십시오.
    • Excel에서 대문자 부울 값이 (TRUE/FALSE)인 파일을 가져올 때 두 값 모두 항상 false로 변환됩니다. 이 동작을 방지하려면 속성을 false로 설정합니다 glide.transform.boolean.casesensitive .
    그림 1. Microsoft Excel 데모 데이터
    Microsoft Excel 데모 데이터

    XML 데이터 소스 파일

    각 행의 XPath
    XML 데이터 소스 정의에는 각 행에 대한 XPath를 지정하는 추가 필드가 있습니다. 이 필드는 임포트 세트 테이블에서 하위 항목이 행으로 변환되는 요소를 선택하는 XPath 식입니다. 선택한 각 요소로 인해 임포트 세트 테이블에 행이 생성됩니다. 선택한 요소의 자식은 행의 열로 변환됩니다. 예를 들어, 아래 샘플 XML 파일에서 자산 정보를 가져오려면 XPath 표현식을 /export/asset으로 지정해야 합니다. 이 표현식은 파일에 있는 세 개의 <asset> 요소와 일치하므로 세 개의 행이 만들어집니다. asset을 지정할 수도 있지만 이 표현식은 큰 파일의 경우 효율성이 훨씬 떨어집니다. XML 로더를 사용할 때 XPath 표현식에 절대 위치 경로 양식을 사용하십시오. 즉, 꼭 필요한 경우가 아니면 포함하는 식을 사용하지 마십시오.

    큰 XML 파일을 사용하여 불충분하게 제한적인 XPath 식을 지정하지 않도록 주의하십시오. 예를 들어 /export 식은 문서(루트) 요소와 일치하므로 다음 샘플 파일에 대해 잘못되었습니다. 일반적으로 문서의 모든 것을 단일 행으로 만들지 않는 한 루트 요소와 일치하는 XPath 식을 지정해서는 안 됩니다. 큰 XML 파일을 로드하려고 할 때 불충분하게 제한적인 XPath 식을 지정하면 처리 시간이 길어지고 잘못된 출력이 발생할 수 있습니다. 이러한 이유로, 몇 행의 데이터만 포함하는 작은 XML 파일을 사용하여 XML 데이터 소스 스펙을 테스트하고 디버그하는 것이 가장 좋습니다. 사양이 테스트되면 전체 파일을 사용하여 다시 실행할 수 있습니다.

    <userInfo> 요소
    <asset> 내에 포함된 <userInfo> 요소에는 자식 요소가 포함되어 있습니다. 이 유형의 중첩은 <userInfo> 요소에 대한 XML을 포함하는 userInfo라는 열을 만듭니다. 자식 노드 확장을 선택하면 userInfo/lastNameuserInfo/firstName에 대한 개별 열도 만들어집니다. 자식 노드 확장을 선택하지 않으면 userInfo XML 열만 만들어집니다.
    XML 파일에서 데이터 로드
    XML 파일에서 데이터를 로드할 때 에서는 ServiceNow 처음 10개 레코드를 샘플링하여 데이터를 저장하는 데 필요한 필드를 결정합니다. 처음 10개의 기록 중 어느 것도 필드에 ServiceNow 대한 값을 지정하지 않으면 임포트한 데이터를 보관하는 테이블에 해당 필드를 추가하지 않습니다. 처음 10개 기록 중 하나 이상이 임포트되는 필드의 값을 지정해야 합니다.
    XML 데이터 소스에 사용되는 XML 파일에 처음 10개 노드의 필드가 포함되어 있지 않으면 필드가 무시됩니다. 필드를 임포트하고 무시되지 않도록 하려면 필드가 처음 발견되는 노드의 위치보다 크거나 같은 값으로 시스템 속성을 추가할 glide.db.impex.XMLLoader.max.scan_nodes 수 있습니다. 이 속성은 모든 XML 데이터 소스에 적용됩니다. glide.db.impex.XMLLoader.max.scan_nodes 기본값은 10이지만 1 에서 2147483647 사이의 값을 입력하여 임포트에 사용할 값을 결정하기 위해 스캔해야 하는 노드 수를 지정할 수 있습니다. -1을 지정하여 XML 파일의 모든 노드를 스캔할 수 있습니다.
    중요사항:
    -1을 지정하거나 기본값 10glide.db.impex.XMLLoader.max.scan_nodes 초과하여 값을 늘리면 모든 XML 가져오기 처리로 인해 전체 로드 시간이 크게 증가할 수 있습니다.
    <?xml version= "1.0" encoding= "utf-8" ?><export><asset><assetTag>AT-01939</assetTag><type>Desktop</type><os>Windows 7 Professional</os><lastlogondate>12-07-2010 12:31:24</lastlogondate><userInfo><lastName>Loo</lastName><firstName>David</firstName></userInfo><isenabled>true</isenabled></asset><asset><assetTag>AT-53480</assetTag><type>Desktop</type><os>Windows 7 Professional</os><lastlogondate>09-07-2010 13:25:53</lastlogondate><userInfo><lastName>Merritt</lastName><firstName>Norris</firstName></userInfo><isenabled>true</isenabled></asset><asset><assetTag>AT-55782</assetTag><type>Desktop</type><os>Unknown</os><lastlogondate>01-01-1900 00:00:00</lastlogondate><userInfo><lastName>Currie</lastName><firstName>Mike</firstName></userInfo><isenabled>true</isenabled></asset></export>

    CSV 데이터 소스 파일

    CSV 파일은 플랫폼 간에 파일을 전송하기 위한 상호 호환 파일 형식으로 사용됩니다. CSV 파일은 그리드를 정의하는 텍스트 파일로, 쉼표는 열을 정의하고 줄 바꿈은 행을 정의합니다. 문자열을 임포트하기 위한 정확한 간격을 정의하려면 선택적으로 텍스트를 따옴표로 묶을 수 있습니다.

    "user_name","name","email","sys_created_on","active"
    "jared.laethem","Jared Laethem","jared.laethem@yourcompany.com","2008-02-24 22:21:32","true"
    "jerrod.bennett","Jerrod Bennett","jerrod.bennett@yourcompany.com","2007-08-12 12:12:18","true"
    "eric.schroeder","Eric Schroeder","eric.schroeder@yourcompany.com","2007-07-03 11:50:20","true"
    "rob.woodbyrne","Rob Woodbyrne","rob.woodbyrne@yourcompany.com","2007-07-03 11:49:57","true"
    "admin","System Administrator","admin@yourcompany.com","2007-07-03 11:48:47","true"
    "christen.mitchell","Christen Mitchell","christen.mitchell@yourcompany.com","2007-05-16 15:26:42","true"
    "rob.phillips","Rob Phillips","rob.phillips@yourcompany.com","2007-01-22 11:25:34","true"
    "davin.czukowski","Davin Czukowski","davin.czukowski@yourcompany.com","2006-07-11 14:01:26","true"
    "luke.wilson","Luke Wilson","luke.wilson@yourcompany.com","2006-02-07 15:29:48","true"
    "bow.ruggeri","Bow Ruggeri","bow.ruggeri@yourcompany.com","2005-07-07 11:39:58","true"
    "don.goodliffe","Don Goodliffe","don.goodliffe@yourcompany.com","2005-05-02 12:28:40","true"
    "david.loo","David Loo","david.loo@yourcompany.com","2005-02-22 16:00:00","true"
    "guest","Guest","guest@yourcompany.com","2004-05-01 17:00:00","true"
    "fred.luddy","Fred Luddy","fred.luddy@yourcompany.com","2004-05-01 17:00:00","true"

    CSV 파일을 사용하는 경우 데이터 소스 양식의 속성 필드를 사용하여 인코딩 문자 집합을 지정할 수 있습니다. 이 필드를 보려면 데이터 소스 양식 에서 양식 레이아웃을 구성해야 할 수 있습니다. 예를 들어 utf-8 인코딩을 사용하려면 charset=utf-8을 입력합니다.

    단일 열의 데이터

    JSON 및 XML 형식의 경우 이 기능을 사용하면 전체 레코드를 단일 열에 저장할 수 있습니다.

    전체 기록을 저장하는 데 사용되는 열 이름은 data입니다.

    JSON 형식 데이터 원본을 만들어 단일 열에 데이터를 저장하는 경우 단일 열의 데이터 확인란을 선택하면 다음 옵션이 업데이트됩니다.
    • 배열 취소 가 선택되지 않고 양식에서 제거됩니다.
    • 하위 노드 확장 이 선택되고 양식에서 제거됩니다.
    그림 2. 단일 열의 JSON 데이터
    단일 열의 JSON 데이터

    XML 형식 데이터 원본을 만들어 단일 열에 데이터를 저장하고 단일 열의 데이터 확인란을 선택하면 하위 노드 확장 이 선택되고 양식에서 제거됩니다.

    그림 3. 단일 열의 XML 데이터
    단일 열의 XML 데이터

    사용자 지정(스크립트를 통해 구문 분석) 형식

    파일유형사용자 지정(스크립트를 통해 구문 분석)형식을 선택하면 구문 분석 스크립트라는 Javascript 편집기가 나타납니다. 구문 분석 스크립트를 사용해 사용자 지정된 Javascript를 생성하고 맵 목록에 입력 라인을 구문 분석할 수 있습니다.

    Javascript에는 세 가지 미리 정의된 매개변수가 있습니다.
    • 매개변수는 line 소스 파일의 라인 데이터를 포함하는 문자열입니다.
    • lineNumber 이 줄 데이터에 대한 소스 파일의 줄 번호입니다.
    • result 매개변수는 Javascript에서 구문 분석된 결과를 다시 전달하는 데 사용됩니다.
    result 매개변수는 Java 오브젝트 ScopedScriptParseResult의 인스턴스입니다. result.를 입력하면 사용 가능한 네 가지 메서드가 Javascript 편집기에 스크립트 자동 완성으로 표시됩니다.
    그림 4. 자동 완성 메뉴
    자동 완성 메뉴
    • 무효 setSkip(부울 건너뛰기);
    • 부울 getSkip();
    • addRow(Map<String, String> 맵);
    • List<Map<String,String>> getRows()

    setSkip()getSkip()은 건너뛰기 플래그를 설정하고 검색합니다. 건너뛰기 플래그를 true로 설정하면 Javascript의 전체 구문 분석 결과가 무시됩니다.

    addRow()는 스테이징 테이블에 삽입되는 구문 분석 행 결과의 맵 하나를 추가합니다.

    getRows()는 스테이징 테이블에 삽입된 현재 구문 분석 결과의 모든 행을 검색합니다.

    원본 데이터의 한 줄에는 하나 또는 여러 행이 포함될 수 있습니다. 줄 데이터를 처리하는 방법을 결정하는 것은 스크립트 작성자의 몫입니다. 예를 들어, 라인 데이터의 경우 name=john,computer=windows; 이름=조, 컴퓨터=리눅스; name=linda,computer=windows, 세미콜론(;)을 행 나누기로 사용하는 경우 이 줄에는 세 행의 데이터가 포함됩니다. 각 행은 이름과컴퓨터라는 두 개의 키가 있는 맵입니다. 이름과컴퓨터는 준비 테이블 스키마의 열 이름이 됩니다. 다음 Javascript 샘플을 사용하여 이 줄 데이터를 구문 분석할 수 있습니다.

    (function(line, lineNumber, result) {
     var rowArr = line.split(";");
     var i;
     for(i in rowArr) {
     var map = {};
     var arr = rowArr[i].split(",");
     var x;
     for(x in arr) {
     var items = arr[x].split("=");
     map[items[0]]=items[1];
     }
     result.addRow(map);
     }
    })(line, lineNumber, result);

    스크립트 작성자는 결과가 스테이징 테이블에 삽입되도록 결과를 추가해야 합니다.