Admin Beginner > Data Management > Import Data
Introduction to Data Import
이번강좌에서는 외부데이타를 가져오는 방법에 대해서 알아보도록 하겠습니다. Salesforce에서 데이타를 가져오기 위한 방법으로는 아래의 두가지가 있습니다.
- Data Import Wizard – Setup메뉴에서 제공하는 마법사를 통해 데이타를 Import할 수 있습니다. 마법사에서 안내하는대로 필드매핑등을 통해 한번에 5만개까지 가져올수 있습니다.
- Data Loader – Data Loader는 파일이나 데이터베이스를 연결햇 최대 1억 5000만 개까지 한번에 가져올수 있는 클라이언트 애플리케이션입니다. 사용자 인터페이스나 터미널 명령어를 통해 실행되며, 명령어 전달시 매개변수를 통해 원본 데이터, 필드매핑등의 정보를 제공해야합니다. 해당데이타를 읽어서 API호출을 통해 데이타를 가져오는 프로세스를 자동화 할 수 있습니다.
두가지 방법 모두 한번에 가져올 수 있는 레코드의 개수는 권한이나 가져오는 데이터타입, 에디션, 또는 현재 계정에 제한된 데이터용량에 따라 달라질 수 있습니다.
Use the Data Import Wizard When:
- 50,000개 미만의 레코드를 로드해야 할 때.
- 마법사로 개체를 가져올 수 있을 때.
- 가져오기 프로세스를 자동화할 필요가 없을 때.
Use Data Loader When:
- 5만~1억 5000만 개의 레코드를 로드해야 할 때. 1억 5000천만 개 이상의 레코드를 로드해야 하는 경우 Salesforce 파트너와 협력하거나 AppExchange를 방문하여 적합한 파트너 제품을 찾아보세요.
- 데이터 가져오기 마법사에서 지원하지 않는 개체를 로드해야 할 때.
- 야간 가져오기 등 정기적인 데이터 로드를 예약할 때.
Data Loader는 SOAP API를 사용하여 레코드를 처리합니다. 더 신속한 처리를 위해 Bulk API를 대신 사용하도록 구성할 수 있습니다. 대량 API는 동시에 많은 수의 레코드를 로드하도록 최적화되어 있습니다. 병렬 처리 및 적은 네트워크 왕복으로 인해 SOAP API보다 빠릅니다.
Prepare for Data Import
여기 Cloud Kicks라는 운동화 회사가 있습니다. 이 회사는 고객의 주문에 따라 맞춤 운동화를 제작해요. 이 회사를 위한 CRM데이터가 외부파일에 존재하는데 이걸 Import해야해요. 파일형식은 CSV이고 레코드가 5만개 미만인데 이번 한번만 Import가 필요한 이라면 Data Import Wizard를 사용하는게 좋겠죠.
아래는 Import를 위한 준비작업입니다:
- 일단 데이타파일을 준비해야겠죠? 시스템이전을 하는거라면 기존 소프트웨어에서 Export를 해야겠고, 수동작업이라면 엑셀파일등에 정리해서 준비해주세요.
- 데이타의 정확성과 일관성을 위해서 파일 내용을 정리하세요. 중복되는 데이타를 삭제하고, 맞춤법이나 기타오류를 수정하고 깔끔하게 정리합니다.
- 데이타파일의 필드가 Object의 필드와 매핑이 되는지를 확인하세요. 데이타가 각 필드의 형식에 맞는지도 체크해야겠죠.
- 마찬가지로 Object쪽도 준비가 되었는지 확인합니다. 새로운 필드가 추가되어야한다거나 선택목록에 새로운 값을 추가한다거나 또는 데이타가 업로드되는 동안 워크플로규칙을 일시적으로 비활성화 해야할 필요가 있는 경우도 있습니다.
데이타파일이 준비가 되었는지를 확인하기 위해서 작은 테스트파일을 먼저 돌려보세요.
아래 영상을 참고하셔도 됩니다.
Data Cleaning
고객이 우리에게 이 CSV 파일을 주면서 그 안에 들은 내용을 Contact에 추가하라고 요구사항을 보냈습니다.
파일링크를 Save As해서 파일을 다운받았어요. 파일을 구글 스프레드시트로 열어보면 아래와 같이 20개의 새 레코드가 보일거에요.

중복체크
일단 여기서 가장 우선적으로 고려해야하는것은 고객이 준 파일에 중복되는 데이타가 있는지 여부입니다. 다행히도 Standard Object인경우 마법사를 이용하면 중복여부를 마법사가 체크를 해주기 때문에 Contact같은 경우는 Email이 같으면 동일인물로 판단합니다. 하지만 Custom Object인경우에는 자동으로 중복체크를 하지 않고 오직 Setup > Matching Rules에서 어떤 어떤 항목이 동일하면 동일레코드로 간주하는지를 설정한 경우에만 마법사가 이를 감지하고 중복체크를 해줍니다. 우리가 데이타를 업로드할 Object는 Contact라서 Standard Object이기 떄문에 중복체크를 자동으로 해주니까 중복문제는 크게 걱정하지 않아도 될것 같아요.
데이타 형식 확인
데이타가 몇개 없을때는 육안으로 문제가 보이지만 만약 고객이 준 파일의 레코드가 천개 만개가 넘는다면 맨눈으로 보고 문제를 파악하는건 실수할 여지가 많아서 반드시 전체데이타를 공식으로 확인해야합니다. 구글스프레스시트에서 제공하는 각종 함수를 이용하여 데이타가 유효한지를 칼럼 하나씩 짚어가면서 검사해보도록 할게요.
- FNAME – 이름에는 숫자나 기호가 들어가면 안되고, 반드시 한개 이상의 알파벳으로 구성되어야하겠죠? 이때 사용할 수 있는 함수가 바로 REGEXMATCH에요. FNAME바로 옆에 임의의 칼럼을 하나 추가해 주세요. 이 칼럼은 FNAME을 검사하는 칼럼이 될거에요. 그리고 그 안에
=REGEXMATCH(A2, "^[a-zA-Z]+$")라고 적어 넣어주세요. REGEXMATCH는 문자열의 형식을 검사하는 함수이고요, 첫번째 인자인 A2는 검사할 데이타 값을 의미해요. John이라는 이름이 A2에 있으니까 이 칸에서는 John이 이름으로 사용하기에 적절한지를 검사하게 됩니다. 두번째 인자에서 바로 검사할 데이타의 형식을 명시해 주는데요. 여기서는^[a-zA-Z]+$라고 넣었죠. 그 의미는 ^ 문자열의 처음부터 $ 끝까지 [a-zA-Z] 들어갈 수 있는 데이타는 알파벳 소문자, 대문자이고 + 한개 이상이어야한다. 라는 뜻이에요. 만약 조건에 맞으면 TRUE를 반환합니다. John대신에 숫자가 특수기호를 넣어보시면 FALSE를 반환할거에요.
- LNAME – 얘도 FNAME과 마찬가지로 칼럼을 하나 추가하고
=REGEXMATCH(B2, "^[a-zA-Z]+$")를 넣어주세요.
- CELL – 전화번호는
=REGEXMATCH(C2,"^\d{3}-\d{3}-\d{4}$"), 3개의 숫자뒤에 -가 들어가고 또 다시 3개의 숫자 그리고 – 마지막에 4개의 숫자가 들어간 데이타만 TRUE가 됩니다. - EMAIL – Email은 조금 복잡해요
=REGEXMATCH(D2,"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$")알파벳 이외에 .이나 _ 혹은 %같은 문자도 허용하고 중간에 @이 반드시 들어가며 그 뒤에는 도메인에 들어갈 법한 문자열과 .이 그 뒤에 반드시 들어가고 2자리 이상의 알파벳이 들어가는 형식입니다. - SALUTATION – 얘는 미스, 미스터 같은 써픽스를 어떤걸 쓰냐 그건데요. 써픽스는 그 개수가 정해져 있잖아요. 그래서 정해진 써픽스중에 하나만 쓰도록 COUNTIF라는 함수를 사용해서 검증할거에요. 우선 새로운 탭을 하나 추가해서 SALUTATION에 들어간 데이타를 복사해오세요. 그리고 상단메뉴에 Data > Data cleanup > Remove duplicates를 클릭하시면 중복되는 레코드가 사라집니다.

그러면 결과에 들어가 있는 데이타중 유니크한 데이타만 보여주게 되는데요. 이렇게 보면 잘못된 써픽스가 하나 들어가있는게 보이네요. Chairman은 써픽스가 아니고 타이틀 이잖아요. Charman이라고 들어가 있는 데이타를 걸러내기 위해서 Charman은 아래 항목에서 삭제합니다.
그러면 아래와 같이 유효한 써픽스만 남는 목록이 완성되는데 이 탭의 이름을 Lists라고 할게요.
그리고 데이타가 들어있는 탭으로 돌아와서 칼럼을 추가하고=COUNTIF(Lists!$A:$A, E2)>0를 넣어줍니다. - TITLE – 얘도 SALUTATION과 마찬가지로 데이타의 중복을 제거하고 Lists탭의 두번째 칼럼에 넣어주세요.

그리고 마찬가지로 데이타를 검증할 칼럼을 추가하고=COUNTIF(Lists!$B:$B, F2)>0를 넣어줍니다.
아래는 검증칼럼이 완성되었을때 화면입니다. 데이타가 전부 TRUE인데 중간에 하나만 FALSE로 잘못된게 보이죠? 아까 언급했던 Chairman은 Title에 들어가야하는데 Salutation에 들어가 있었던 것 때문에 오류입니다.

참고로 False가 나왔을때 셀의 색상이 빨간색이면 육안으로 확인했을때 좀더 캐치하기가 쉽겠죠. 색상을 바꾸고 싶은 영역을 전부 선택하고 상단메뉴에서 Format > Conditional Formatting을 클릭하시면 오른쪽에 색상을 바꾸고 싶은 조건과 보여줄 색상을 선택할 수 있습니다.

Use the Data Import Wizard
우리가 위에서 데이타를 정리했잖아요. 원래 데이타를 준비할때는 깔끔하게 다 체크하는게 맞아요 맞는데 마법사를 이용하면 이런것들을 어느정도 자동으로 해주기 때문에 마법사가 어디까지 해주는지를 알아보기 위해서 우리가 재정돈한 파일이 아닌 다운받았던 원본파일로 데이타입력을 진행해볼게요.
Setup에서 Quick Find에 Data Import Wizard를 검색해서 클릭해주세요. 밑으로 스크롤하면 Launch Wizard버튼이 보입니다. 클릭하세요.

Import화면이 열리면 가장먼저 어느 Object에 해당 데이타를 Import할지를 물어봅니다. 우리는 고객데이타를 Accounts and Contacts에 넣어야하니까 선택해주시고요. 팝업메뉴가 뜨면 Add new records를 선택합니다. 그러면 아래와 같이 어떤 파일형식을 업로드할지를 물어보는데 이때 CSV를 선택하고 다운받은 파일을 찾아서 올려줍니다.
여기에서 Match Contact by는 Name으로 선택해주셔야하는데 저는 그걸 빠뜨렸어요. 화면에는 None으로 되어있는데 제가 실수한겁니다.

Next버튼을 누르면 다음과 같이 칼럼이 필드와 매핑이 안된다고 나오거든요. 이거는 FNAME 이딴식으로 칼럼명을 정해서 그런거에요 이거를 First Name으로 했다면 이런 수고는 덜었을텐데 암튼 지금은 이거를 수동으로 매핑을 해주셔야되요. FNAME항목 왼쪽에 있는 Map링크 있죠 그거를 눌르세요.

그러면 FNAME을 어따가 매핑할지를 정하는 팝업이 뜨거든요. 얘는 Contact에 있는 First name이랑 매핑할거니까 찾아서 선택해주세요.

LNAME이랑 CELL도 마찬가지로 필드명을 아래와 같이 매핑해주세요.
CELL은 Mobile과 매핑하셔야합니다. 아래 화면은 제가 실수한거에요.

Next버튼을 누르면 6개의 필드가 매핑되었고 매핑이 안된 필드는 하나도 없다고 나옵니다. 하단에 Start Import버튼을 눌러서 데이타입력을 시작해주세요. 어디 데이타 오류를 마법사가 잡아내는지 궁금하네요.

오잉? 군말없이 잘 들어갔다는데 데이타를 한번 확인해 볼까요?

OK버튼을 누르면 누가 파일데이타를 업로드했는지 자세히 나옵니다.

오류가 있었던 데이타를 봤는데 Chairman으로 들어가있네요. 그런데 다시 생각해보니까 Chaiman도 써픽스가 될 수도 있을것 같아요. 이건 영어능력의 문제인데 사실 이게 맞는지 확신이 안드네요. Salesforce를 잘하려면 영어에 대한 센스가 필수적인것 같아요.

Hands-on Challenge
방금 한게 Challenge였는데 문제는 제가 설명을 제대로 안읽고 제 맘대로 해서 좀 망한거 같아요
Import data using the Data Import Wizard.
Download a CSV file that contains contact data, and import it using the Data Import Wizard.
- Download this CSV file by right-clicking and selecting “Save Link As”. Make sure you save it as a CSV (.csv) file, and not a text (.txt) file. You don’t need to use Excel.
- Use the Data Import Wizard to import the file:
- Kind of data: Accounts and Contacts
- Type of import: Add new records
- Match Contact by: Name <<<<<<< 이거 빠뜨렸구요
- Where is your data located?: CSV
- File: Choose File
- Character Code: ISO-8859-1 (the default)
- Values Separated by: Comma
- Map all fields:
- FNAME to Contact: First Name
- LNAME to Contact: Last Name
- CELL to Contact: Mobile <<<<<<<< 결정적으로 이거 ㅠㅠㅜ Phone이라고 임의로 생각해서 Mobile로 데이타를 옮겨야할 것같아요.
여러분들은 고객의 요구사항은 신중하게 숙지하셔서 이런 실수가 없으시기를 바랍니다.
실수 만회
제가 한 실수를 만회해야겠죠? 방금 업로드했던 CSV파일을 열어줍니다. 그리고 CELL이라고 되어있던 칼럼명을 MOBILE로 바꾸고 PHONE이라는 칼럼을 하나 추가해서 안에 #N/A라고 넣으세요. 아무것도 안넣으면 그냥 내버려두라는 뜻이 되서 기존 데이타가 삭제가 안됩니다.

그리고 이번에는 새로운 레코드를 추가하는게 아니라 Update existing records를 선택합니다.

그리고 아래와 같이 매핑을 해줍니다. PHONE이 Account에도 있고 Contact Object에도 있어서 Account는 삭제해주었습니다.

이 뒤로는 아시죠 Next, Next, Import하시면 됩니다. 이제야 전번이 Mobile에 들어갔네요.

오늘의 교훈은 요구사항을 정확하게 숙지하자 였습니다. 초록색버튼 눌러서 500포인트 꼭 받아가세요!