Firebase의 기능 중 데이터베이스에 데이터를 밀어넣는 작업을 하려고 합니다. 몇개 되지 않으면 수작업으로 하면 되는데 데이터의 양이 많을 경우에는 하나씩 입력 한다는 건 불가능 하죠. 우리가 지금까지 사용해 오던 oracle이나 mysql 등 처럼 한번에 밀어 넣는 방법이 있으면 좋을 텐데 아직은 좀 귀찮은 작업들이 필요 합니다. 언젠가는 좋은 기능들이 추가되겠죠.
작업 순서
1. json 데이터 생성
2. node.js 준비
3. Firebase 설정
4. account key
5. import.js
6. 데이터 입력
엑셀자료와 csv 데이터도 실제로는 json 형태로 변경을 해야 입력이 가능 합니다. 결론적으론 json 형태로 파일을 만들어 입력 하는 방법을 알아 보려고 합니다.
1. json 데이터 생성
다음과 같은 엑셀 자료가 있고 firestore에 입력 하기위해 json 형태로 변형을 해야 합니다.
먼저 엑셀을 다음과 같이 csv로 저장 합니다.
메모장으로 열어보면 쉼표로 데이터들이 구분이 되어 있는데 이걸 복사해서 인터넷에서 온라인으로 csv를 json으로 변환해주는 사이트를 이용해 변형을 합니다.
{ “member” : [ { "id": "a", "name": "copy", "age": 11, "tel": "000-0000-0000" }, { "id": "b", "name": "coding", "age": 22, "tel": "000-1111-1111" }, { "id": "c", "name": "test", "age": 33, "tel": "000-2222-2222" }, { "id": "d", "name": "hohoho", "age": 44, "tel": "000-3333-3333" } ] } |
변환된 데이터를 확장자가 json으로 해서 저장을 합니다. 저는 member.json으로 저장 했습니다.
붉은색 부분은 firestore의 collection을 member로 생성을 해서 그곳에 입력을 하기 위해 추가를 했습니다.
2. node.js 준비
npm 명령을 사용해야 하기 때문에 먼저 node.js가 설치되어 있어야 합니다. node.js가 설치되어 있다면 먼저 초기화를 위해
>npm init
명령을 사용 합니다. 그리고 추가 입력 부분은 그냥 엔터로 넘어가도 됩니다.
그리고 제일 중요한 firestore 관련 패키지를 설치 합니다.
>npm install firestore-export-import
명령이 실행되고 아무것도 없던 폴더에 생성된 파일을 보면
이런 식으로 폴더에 파일들이 생성 되었습니다.
3. Firebase 설정
이제 firestore에 접속하기 위한 환경 변수들을 생성해야 합니다. firebase에 접속해서 프로젝트를 선택 합니다.
여기서 [+앱 추가]를 선택 하고
확장된 아이콘들에서 </>를 선택하여 웹 앱을 추가 합니다.
웹 앱을 만들기 위해 이름을 적당히 입력하고 [앱 등록] 버튼을 클릭 합니다.
웹 앱에 접속하기 위한 설정 값들이 보이는 군요. 복사를 해서 옮겨 놓습니다.
<!-- The core Firebase JS SDK is always required and must be listed first --> <script src="https://www.gstatic.com/firebasejs/7.14.5/firebase-app.js"></script>
<!-- TODO: Add SDKs for Firebase products that you want to use https://firebase.google.com/docs/web/setup#available-libraries --> <script src="https://www.gstatic.com/firebasejs/7.14.5/firebase-analytics.js"></script>
<script> // Your web app's Firebase configuration var firebaseConfig = { apiKey: "AIzaSyCkC3cqbmGfb4XGCX_BUaLKTePvE3em0sU", authDomain: "copycoding-bca04.firebaseapp.com", databaseURL: "https://copycoding-bca04.firebaseio.com", projectId: "copycoding-bca04", storageBucket: "copycoding-bca04.appspot.com", messagingSenderId: "413154097054", appId: "1:413154097054:web:046f67449283eca596488f", measurementId: "G-6JQFB5C1Z7" }; // Initialize Firebase firebase.initializeApp(firebaseConfig); firebase.analytics(); </script> |
여기에서 var firebaseConfig = {...} 이 부분을 이용해서
var firebaseConfig = { apiKey: "AIzaSyCXXxxxXXXXxxxxXXXXxxXXxXXXxxXXxXXX0sU", authDomain: "copycoding-bca04.firebaseapp.com", databaseURL: "https://copycoding-bca04.firebaseio.com", projectId: "copycoding-bca04", storageBucket: "copycoding-bca04.appspot.com", messagingSenderId: "41323232323232324", appId: "1:41312323232323:web:02323232323232323232323238f", measurementId: "G-623reddfhgjkhfgsdZ7" } module.exports = firebaseConfig; |
config.js 파일을 생성 합니다.
4. Service Account Key 생성
데이터베이스에 접근하기 위한 공개키를 생성하는 단계 입니다. 아무나 와서 디비를 헤집고 다니지 못하도록 하는 키를 생성하는 단계 입니다. [서비스 계정] 탭을 선택하면 됩니다.
지금 node.js 를 사용하려는 거니 라디오 버튼을 확인 하고 [새 비공개 키 생성] 버튼을 클릭 합니다.
키를 잘 보관하라는 안내가 나옵니다. [키 생성] 버튼을 클릭 합니다.
[확인] 버튼을 이용해서 키를 저장 합니다. 파일명은 대충 copycoding-bca04-firebase-adminsdk-vdj8s-4728099cc6.json 이렇게 저장 됩니다.
{ "type": "service_account", "project_id": "copycoding-bca04", "private_key_id": "4728098675uygf65yfdertu7fgy9upjoi87tgyi5rytt36", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQ=\n-----END PRIVATE KEY-----\n", "client_email": "firebase-adminsdk-vdj8s@copycoding-bca04.iam.gserviceaccount.com", "client_id": "118876654423786789765453", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/certs", "client_x509_cert_url": "https://www.googleapis.com/serviceaccount.com" } |
생각보다 키의 내용이 긴데 대충 잘랐습니다. 그리고 serviceAccount.json 이름으로 저장을 했습니다.
5. import.js 작성
firestore에 입력할 데이터와 설정 파일, 키 파일이 준비가 되었으니 실제 데이터를 추가하는 프로그램을 생성 합니다. 물론 파일명은 자유롭게 해서 생성하면 됩니다.
// Imports const firestoreService = require('firestore-export-import'); const firebaseConfig = require('./config.js'); const serviceAccount = require('./serviceAccount.json');
// JSON To Firestore const jsonToFirestore = async () => { try { console.log('Initialzing Firebase'); await firestoreService.initializeApp(serviceAccount, firebaseConfig.databaseURL); console.log('Firebase Initialized');
await firestoreService.restore('./member.json'); console.log('Upload Success'); } catch (error) { console.log(error); } };
jsonToFirestore(); |
위에서 생성한 3개의 파일이 사용됩니다. 최종적인 폴더 내 파일들의 모습입니다.
이렇게 파일 작업이 완료 되었습니다.
5. 데이터 입력
마지막으로 작성한 import.js 를 실행해 줍니다.
>node import.js
upload가 성공했다고 하는데 진짜인지 함 확인해 봅니다.
예. 데이터들이 잘 입력 되었습니다.
- copy coding -
'Setting' 카테고리의 다른 글
[Firebase] Assistant 이용 Android와 Firestore 연결 (0) | 2020.06.25 |
---|---|
[Firebase] 안드로이드(Android) 앱과 Firebase 연결 (0) | 2020.06.16 |
[Firebase] Cloud Firestore 데이터 생성 방법 (0) | 2020.05.25 |
[Firebase] 프로젝트 생성하고 콘솔(Console) 에서 삭제 하기 (0) | 2020.05.23 |
[Spring boot] 스프링부트 Spring Tool Suite 3 버전 설치 (0) | 2020.05.01 |