Firebase의 기능 중 데이터베이스에 데이터를 밀어넣는 작업을 하려고 합니다몇개 되지 않으면 수작업으로 하면 되는데 데이터의 양이 많을 경우에는 하나씩 입력 한다는 건 불가능 하죠우리가 지금까지 사용해 오던 oracle이나 mysql 등 처럼 한번에 밀어 넣는 방법이 있으면 좋을 텐데 아직은 좀 귀찮은 작업들이 필요 합니다언젠가는 좋은 기능들이 추가되겠죠.


firebase firestore excel csv json




작업 순서

1. json 데이터 생성

2. node.js 준비

3. Firebase 설정

4. account key

5. import.js

6. 데이터 입력

 

엑셀자료와 csv 데이터도 실제로는 json 형태로 변경을 해야 입력이 가능 합니다결론적으론 json 형태로 파일을 만들어 입력 하는 방법을 알아 보려고 합니다.

 

1. json 데이터 생성

 

다음과 같은 엑셀 자료가 있고 firestore에 입력 하기위해 json 형태로 변형을 해야 합니다.


firebase firestore excel csv json


먼저 엑셀을 다음과 같이 csv로 저장 합니다.


firebase firestore excel csv json

 

메모장으로 열어보면 쉼표로 데이터들이 구분이 되어 있는데 이걸 복사해서 인터넷에서 온라인으로 csvjson으로 변환해주는 사이트를 이용해 변형을 합니다.

 

{

“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으로 저장 했습니다.

붉은색 부분은 firestorecollectionmember로 생성을 해서 그곳에 입력을 하기 위해 추가를 했습니다.

 


2. node.js 준비

 

npm 명령을 사용해야 하기 때문에 먼저 node.js가 설치되어 있어야 합니다.  node.js가 설치되어 있다면 먼저 초기화를 위해

 

>npm init

명령을 사용 합니다그리고 추가 입력 부분은 그냥 엔터로 넘어가도 됩니다.


firebase firestore excel csv json


그리고 제일 중요한 firestore 관련 패키지를 설치 합니다.

 

>npm install firestore-export-import


firebase firestore excel csv json


명령이 실행되고 아무것도 없던 폴더에 생성된 파일을 보면


firebase firestore excel csv json


이런 식으로 폴더에 파일들이 생성 되었습니다.

 


3. Firebase 설정

 

이제 firestore에 접속하기 위한 환경 변수들을 생성해야 합니다.  firebase에 접속해서 프로젝트를 선택 합니다.


firebase firestore excel csv json


여기서 [+앱 추가]를 선택 하고


firebase firestore excel csv json


확장된 아이콘들에서 </>를 선택하여 웹 앱을 추가 합니다.


firebase firestore excel csv json


웹 앱을 만들기 위해 이름을 적당히 입력하고 [앱 등록] 버튼을 클릭 합니다.


firebase firestore excel csv json

 

웹 앱에 접속하기 위한 설정 값들이 보이는 군요복사를 해서 옮겨 놓습니다.

 

<!-- 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 생성

 

데이터베이스에 접근하기 위한 공개키를 생성하는 단계 입니다아무나 와서 디비를 헤집고 다니지 못하도록 하는 키를 생성하는 단계 입니다.  [서비스 계정] 탭을 선택하면 됩니다.


firebase firestore excel csv json


지금 node.js 를 사용하려는 거니 라디오 버튼을 확인 하고 [새 비공개 키 생성] 버튼을 클릭 합니다.


firebase firestore excel csv json


키를 잘 보관하라는 안내가 나옵니다.  [키 생성] 버튼을 클릭 합니다.


firebase firestore excel csv json


 

[확인] 버튼을 이용해서 키를 저장 합니다파일명은 대충 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개의 파일이 사용됩니다최종적인 폴더 내 파일들의 모습입니다.

 


firebase firestore excel csv json


이렇게 파일 작업이 완료 되었습니다.

 

 

5. 데이터 입력

 

마지막으로 작성한 import.js 를 실행해 줍니다.

 

>node import.js


firebase firestore excel csv json


upload가 성공했다고 하는데 진짜인지 함 확인해 봅니다.


firebase firestore excel csv json


데이터들이 잘 입력 되었습니다.


- copy coding -


구글 Firebase는 데이터를 저장 하는데 데이터베이스로 사용하기도 하고 파일 형태의 데이터를 저장하고 사용할 수 도 있습니다. 이번에는 firebaseProject를 생성 하였다면 데이터를 저장 하는 방법을 알아 봅니다.  


firebase cloud firestore database


데이터베이스 생성


파이어베이스에서 생성한 프로젝트를 선택하여 콘솔 화면으로 이동 합니다.  


firebase cloud firestore database


좌측 메뉴에서 Database메뉴를 선택하면 Cloud Firestoredatabase를 생성할 수 있는 화면으로 이동 합니다데이터베이스를 생성 하기 위해 [데이터베이스 만들기] 버튼을 클릭하여 팝업 창을 오픈 합니다.


firebase cloud firestore database


데이터베이스 생성은 [프로덕션 모드에서 시작][테스트 모드로 시작] 두 개의 조건이 있는데 라디오 버튼을 클릭해 보면 우측에 어떤 기능인지 설명과 스크립트를 볼 수 있습니다.


firebase cloud firestore database


자세히 보면 조건에 따른 권한임을 알 수 있는데 일단 [테스트 모드로 시작]을 선택하고 [다음] 버튼을 클릭 합니다.


firebase cloud firestore database


데이터베이스를 어디에 생성 할 것인가 하는 서버의 위치를 설정하는 화면 입니다너무 먼거리에 위치하면 속도가 느리고 과금 문제도 발생할 수 있습니다.

Cloud Firestore 위치는 테스트 할 때는 별로 중요하지 않지만 대한민국은 어디에 있는지 한번 알아 보겠습니다.


firebase cloud firestore database


각국의 중요 도시가 나오는데 서울은 구글 리스트에 나오지 않는군요좀더 찾아 봅니다.


firebase cloud firestore database


여기 맨 끝에 간신히 붙어 있네요서울(asia-northease3)으로 되어 있습니다.


firebase cloud firestore database


asia-northeast3을 선택 하고 [완료] 버튼을 클릭 합니다잠시 작업이 진행되고 


firebase cloud firestore database


 

데이터베이스가 생성이 되었습니다.

 

데이터 추가

 

이제 생성된 데이터베이스에 데이터를 추가하는데 일반 database와는 다르게 Table로 관리되지 않고 Collection, Document, Field 순으로 입력 하고 관리가 됩니다먼저 컬렉션을 만들기 위해 [컬렉션 시작]을 클릭 합니다.


firebase cloud firestore database


컬렉션 시작 창에서 컬렉션 ID를 입력하고 [다음]버튼을 클릭 합니다


firebase cloud firestore database


문서 ID는 자동 생성되는데 테스트 삼아 한번 입력해 보았습니다필드들은 ‘+’, ‘-‘ 버튼을 이용해서 추가 삭제하며 입력 합니다대충 입력했으면 [저장] 버튼을 클릭 합니다.


firebase cloud firestore database


데이터가 하나 추가 되었습니다이번에는 문서추가를 클릭하고


firebase cloud firestore database


문서 ID는 자동으로 하고 데이터를 입력한 후 [저장]버튼을 클릭 합니다.


firebase cloud firestore database


동일한 방법으로 데이터를 추가해서 사용하면 됩니다.


- copy coding -


데이터를 생성 하고 웹과 앱에서 동시에 사용하기 좋은 장소로 cloud가 딱인것 같아 한번 구성을 해보았습니다.  Firebase 뿐만 아니라 google에서 제공하는 cloud 관련 서비스를 사용 하려면 구글 계정이 있어야 합니다.




https://firebase.google.com/


firebase project create delete


처음부터 크롬 브라우저 우측 상단의 로그인을 클릭 하던가 아니면 그림 속 [시작하기] 버튼을 클릭 하면 구글 로그인 페이지로 이동하니 로그인을 합니다그리고 다시 파이어베이스 페이지로 돌아와 시작하기 버튼을 클릭 하여 Firebase에 들어오면 아무것도 없습니다.

 

Firebase 프로젝트 생성


firebase project create delete


[프로젝트 만들기] 버튼을 클릭해서 새로운 프로젝트를 생성해서 사용하면 되는데 프로젝트는 여러개 생성 가능 합니다그럼 프로젝트 생성을 시작해 봅니다.


firebase project create delete


적당한 프로젝트 이름을 입력해 줍니다. 그리고 [계속하다] 버튼을 클릭 합니다.


firebase project create delete


로그 분석 설정입니다필요 없으면 하단의 설정을 취소하고 [계속하다] 버튼을 클릭 합니다.


firebase project create delete


계정을 설정 하거나 신규로 생성 합니다. 신규로 생성하는 경우


firebase project create delete


체크박스를 모두 선택 해야 프로젝트 만들기 버튼이 활성화 됩니다계정을 선택 또는 만들기를 하고 최종적으로 [프로젝트 만들기] 버튼을 클릭 합니다.


firebase project create delete


프로젝트가 생성중입니다.


firebase project create delete


프로젝트가 생성 되었습니다.  [계속하다] 버튼을 클릭하면 콘솔 화면으로 이동 합니다.


firebase project create delete


프로젝트는 여러개 생성이 가능 합니다.  Firebase 메인 페이지로 이동하면


firebase project create delete


다음과 같이 새로 생성된 프로젝트가 보이고 추가 버튼도 있습니다프로젝트 추가를 누르면 앞에서 했던 새로운 프로젝트 생성이 진행 됩니다.

 

 

Firebase 프로젝트 삭제

 

물건을 구매하고 단순 변심에 의한 환불은 안되지만 firebase로 생성한 프로젝트가 마음에 들지 않거나 필요 없는 경우에는 언제든지 삭제가 가능 합니다.


firebase project create delete


삭제 하려면 일단 삭제 하려는 프로젝트를 클릭 하여 firebase console로 이동 합니다


firebase project create delete


해당 파이어베이스 프로젝트 콘솔로 이동을 하고 나서 프로젝트 개요의 우측에 설정 아이콘을 클릭하면 팝업 메뉴가 나타납니다.  [프로젝트 설정] 메뉴를 선택 합니다.


firebase project create delete


설정 화면에서 [프로젝트 삭제]를 클릭 합니다.


firebase project create delete


경고 프로젝트 삭제 팝업 창에서 모든 체크박스를 선택하면 [프로젝트 삭제] 버튼이 빨간색으로 활성화 됩니다이제 [프로젝트 삭제] 버튼을 클릭하면 프로젝트가 삭제 됩니다.


- copy coding -


LinuxPostgreSQL가 설치 되어 있는데 신규 프로젝트를 위한 DB를 생성할 일이 발생했습니다.

PostgreSQL에 사용자 계정을 생성하고 신규 Database를 만들어 외부에서 접속 가능하도록 설정을 하려고 합니다작업 순서도 계정 생성, DB생성, 접속 설정 순으로 진행 합니다.


postgresql user database create


작업시 주의사항은 root 권한으로 하는 작업과 postgres 권한으로 하는 작업 그리고 DB에 접속해서 하는 작업이 섞여 있습니다.

 

우선 postgresql에 접속을 합니다.

$ sudo -u postgres psql

 

접속이 성공하면 계정 생성과 디비 생성을 진행 합니다.

 

- 계정 및 권한

postgres=# CREATE USER copycoding SUPERUSER;


- 비번 생성

postgres=# ALTER USER copycoding WITH PASSWORD 'copycopy';


- DB 생성

postgres=# create database copycodingdb with owner copycoding encoding 'UTF8';

postgresql user database create


이제 postgresql을 재시작 해주는데 설치를 어떻게 했냐에 따라 뒤에 버전 정보가 붙을 수도 있습니다저는 9.6을 설치하며 버전정보를 그냥 사용했습니다.

 

$ sudo systemctl restart postgresql-9.6

 

DB가 잘 생성이 되었는지 확인하기 위해 다시 DB에서 명령어로 확인합니다.

postgres=# \l


postgresql user database create


상단에 생성된 DB가 보이니 잘 만들어 졌습니다

 

이제 외부에서 접속 할 수 있도록 설정 합니다설정 파일 위치를 확인 하고

postgres=# show hba_file;

              hba_file              

-------------------------------------

 /var/lib/pgsql/9.6/data/pg_hba.conf

(1 row)

 

 

계정을 postgres로 변경 합니다.

[root@localhost copycoding]# su postgres

 

그리고 검색한 파일을 수정 합니다.

$ vi /var/lib/pgsql/9.6/data/pg_hba.conf


파일을 열고 IPv4 부분을 찾아 라인을 하나 추가 합니다.

host    all             copycoding      0.0.0.0/0               md5


postgresql user database create


신규 User 정보를 추가가 끝나면 저장하고

 

postgres=# pg_ctl reload

 

디비를 재시작 합니다.

# sudo systemctl restart postgresql-9.6

 

아직 설정이 하나 더 남아 있습니다.  postgres 계정으로 conf 파일을 수정 합니다.


bash-4.2$ vi /var/lib/pgsql/9.6/data/postgresql.conf

 

파일에서 주석이 되어 있으면 주석을 풀고 다음처럼 수정 합니다.

 

listen_addresses = '*'

port = 5432


postgresql user database create


방화벽도 설정을 합니다.

$ firewall-cmd --permanent --add-port=5432/tcp

$ firewall-cmd --reload

 

설정이 모두 완료 되었습니다.

Windows에서 pgAdmin III를 이용하여 접속을 해 봅니다.


postgresql user database create


서버에서 디비를 생성할때 기록한 정보를 입력하고 OK 버튼을 클릭 합니다.


postgresql user database create


9.6을 설치해서 pgAdmin III는 지원이 잘 안될 수 있다고 하는데 무시하고 확인버튼을 클릭 합니다.


postgresql user database create


접속이 잘 되는 군요아직 Table 작업은 안되어있긴 하지만 성공입니다.


- copy coding -


1···38394041424344···118

+ Recent posts