์ด ํ์ด์ง์์๋ CSV ํ์ผ์ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์คํด์ค๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ด๊ณ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
์์ํ๊ธฐ ์ ์
๋ด๋ณด๋ด๊ธฐ ๋๋ ๊ฐ์ ธ์ค๊ธฐ ์์ ์ ์์ํ๊ธฐ ์ ์ ๋ค์ ์ฌํญ์ ํ์ธํ์ธ์.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถฉ๋ถํ ์ฌ์ ๊ณต๊ฐ์ด ์๋์ง ํ์ธํฉ๋๋ค.
- CSV ํ์ผ์ ์์ ๋ฐ์ดํฐ๊ฐ ์๊ณ ํ์์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํฉ๋๋ค. CSV ํ์ผ์๋ ๋ฐ์ดํฐ ํ๋์ ํ๋ง๋ค ํ ์ค์ด ์์ด์ผ ํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ด๋ณด๋ด๊ธฐ ๋ฐ ๊ฐ์ ธ์ค๊ธฐ ๊ถ์ฅ์ฌํญ์ ๋ฐ๋ฅด์ธ์.
๋ด๋ณด๋ด๊ธฐ ๋ฐ ๊ฐ์ ธ์ค๊ธฐ ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ง๋ง ์ธ์คํด์ค๊ฐ ํ๋ก๋น์ ๋๋์ง ์๋ ํ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์ง์ฅ์ ์ฃผ์ง ์์ต๋๋ค.
PostgreSQL์ฉ Cloud SQL์์ ๋ฐ์ดํฐ ๋ด๋ณด๋ด๊ธฐ
PostgreSQL์ฉ Cloud SQL์์ ๋ด๋ณด๋ด๊ธฐ์ ํ์ํ ์ญํ ๋ฐ ๊ถํ
๋ฐ์ดํฐ๋ฅผ Cloud SQL์์ Cloud Storage๋ก ๋ด๋ณด๋ด๋ ค๋ฉด ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์์ํ๋ ์ฌ์ฉ์์๊ฒ ๋ค์ ์ญํ ์ค ํ๋๊ฐ ์์ด์ผ ํฉ๋๋ค.
- Cloud SQL ํธ์ง์ ์ญํ
- ๋ค์ ๊ถํ์ด ํฌํจ๋ ๋ง์ถค ์ญํ :
cloudsql.instances.get
cloudsql.instances.export
๋ํ Cloud SQL ์ธ์คํด์ค์ ์๋น์ค ๊ณ์ ์๋ ๋ค์ ์ญํ ์ค ํ๋๊ฐ ์์ด์ผ ํฉ๋๋ค.
storage.objectAdmin
Identity and Access Management(IAM) ์ญํ- ๋ค์ ๊ถํ์ด ํฌํจ๋ ๋ง์ถค ์ญํ :
storage.objects.create
storage.objects.list
(ํ์ผ์ ๋์์ ๋ด๋ณด๋ด๋ ๊ฒฝ์ฐ์๋ง)storage.objects.delete
(ํ์ผ์ ๋์์ ๋ด๋ณด๋ด๋ ๊ฒฝ์ฐ์๋ง)
IAM ์ญํ ์ ๋ํ ๋์๋ง์ Identity and Access Management๋ฅผ ์ฐธ์กฐํ์ธ์.
PostgreSQL์ฉ Cloud SQL์์ CSV ํ์ผ๋ก ๋ฐ์ดํฐ ๋ด๋ณด๋ด๊ธฐ
๋ค๋ฅธ ๋๊ตฌ์ ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์๋ CSV ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค. ๋ด๋ณด๋ด๊ธฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค์์ ๋ฐ์ํฉ๋๋ค. CSV ๋ด๋ณด๋ด๊ธฐ ๋์ค์ ๋ด๋ณด๋ผ ์คํค๋ง๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค์ ๋ชจ๋ ์คํค๋ง๋ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
Cloud SQL ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ Cloud Storage ๋ฒํท์ CSV ํ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ด๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- ๋ด๋ณด๋ด๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ด๋ณด๋ด๊ธฐ๊ฐ ์งํ๋๋ ๋์ ๋ค๋ฅธ ์์ ์ ์ํํ๋ ค๋ฉด ๋ด๋ณด๋ด๊ธฐ ์คํ๋ก๋๋ฅผ ์ ํํฉ๋๋ค.
-
Cloud Storage ๋ด๋ณด๋ด๊ธฐ ์์น ์น์
์์ ๋ด๋ณด๋ผ ๋ฒํท, ํด๋, ํ์ผ์ ์ด๋ฆ์ ์ถ๊ฐํ๊ฑฐ๋ ์ฐพ์๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ๋ฒํท, ํด๋ ๋๋ ํ์ผ์ ์ฐพ๊ฑฐ๋ ๋ง๋ญ๋๋ค.
์ฐพ์๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ ๊ฒฝ์ฐ:
- ์์น ์น์ ์์ ๋ด๋ณด๋ผ Cloud Storage ๋ฒํท ๋๋ ํด๋๋ฅผ ์ ํํฉ๋๋ค.
์ด๋ฆ ์์์
CSV
ํ์ผ์ ์ด๋ฆ์ ์ถ๊ฐํ๊ฑฐ๋ ์์น ์น์ ์ ๋ชฉ๋ก์์ ๊ธฐ์กด ํ์ผ์ ์ ํํฉ๋๋ค..gz
ํ์ผ ํ์ฅ์(์ ์ฒด ํ์ฅ์๋.csv.gz
)๋ฅผ ์ฌ์ฉํ์ฌ ๋ด๋ณด๋ด๊ธฐ ํ์ผ์ ์์ถํ ์ ์์ต๋๋ค.- ์ ํ์ ํด๋ฆญํฉ๋๋ค.
- ํ์ ์น์ ์์ CSV๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ด๋ณด๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์น์ ์ ๋๋กญ๋ค์ด ๋ฉ๋ด์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ์ ์ ํํฉ๋๋ค.
-
SQL ์ฟผ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ผ ํ ์ด๋ธ์ ์ง์ ํ๋ SQL ์ฟผ๋ฆฌ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์๋ฅผ ๋ค์ด
guestbook
๋ฐ์ดํฐ๋ฒ ์ด์ค์์entries
ํ ์ด๋ธ์ ์ ์ฒด ์ฝํ ์ธ ๋ฅผ ๋ด๋ณด๋ด๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํฉ๋๋ค. ์ฟผ๋ฆฌ๋ ์ง์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ ์ด๋ธ์ ์ง์ ํด์ผ ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฒด๋ฅผ CSV ํ์์ผ๋ก ๋ด๋ณด๋ผ ์๋ ์์ต๋๋ค.SELECT * FROM guestbook.entries;
- ๋ด๋ณด๋ด๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ์์ํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ด๋ณด๋ผ๊น์? ๋ํ์์๊ฐ ์ด๋ฆฌ๊ณ ํฌ๊ธฐ๊ฐ ํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ ๋ด๋ณด๋ด๊ธฐ ํ๋ก์ธ์ค๊ฐ 1์๊ฐ ์ด์ ๊ฑธ๋ฆด ์ ์๋ค๋ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. ๋ด๋ณด๋ด๋ ๋์ ์ธ์คํด์ค์ ์ํํ ์ ์๋ ์ ์ผํ ์์ ์ ์ ๋ณด ๋ณด๊ธฐ์ ๋๋ค. ๋ด๋ณด๋ด๊ธฐ๊ฐ ์์๋ ํ ์์ ์ ์ทจ์ํ ์ ์์ต๋๋ค. ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์์ํด๋ ์ข์ผ๋ฉด ๋ด๋ณด๋ด๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ทจ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
- Cloud Storage ๋ฒํท์ ๋ง๋ญ๋๋ค.
ํ์ผ์ ๋ฒํท์ ์ ๋ก๋ํฉ๋๋ค.
๋ฒํท์ ํ์ผ ์ ๋ก๋ํ๊ธฐ์ ๋ํ ๋์๋ง์ ๊ฐ์ฒด ์ ๋ก๋๋ฅผ ์ฐธ์กฐํ์ธ์.
- ๋ด๋ณด๋ผ Cloud SQL ์ธ์คํด์ค์ ์๋น์ค ๊ณ์ ์ ์ฐพ์ต๋๋ค.
gcloud sql instances describe
๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์ํํ ์ ์์ต๋๋ค. ์ถ๋ ฅ์์serviceAccountEmailAddress
ํ๋๋ฅผ ์ฐพ์ต๋๋ค.gcloud sql instances describe INSTANCE_NAME
gcloud storage buckets add-iam-policy-binding
์ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์คํด์ค ์๋น์ค ๊ณ์ ์storage.objectAdmin
IAM ์ญํ ์ ๋ถ์ฌํฉ๋๋ค. IAM ๊ถํ ์ค์ ์ ๋ํ ๋์๋ง์ IAM ๊ถํ ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ด๋ณด๋
๋๋ค.
gcloud sql export csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --offload \ --query=SELECT_QUERY
export csv
๋ช ๋ น์ด ์ฌ์ฉ์ ๋ํ ์์ธํ ๋ด์ฉ์sql export csv
๋ช ๋ น์ด ์ฐธ์กฐ ํ์ด์ง๋ฅผ ํ์ธํ์ธ์. - ์ด์ ์ ์ค์ ํ IAM ์ญํ ์ ์ ์งํ ํ์๊ฐ ์์ผ๋ฉด ์ง๊ธ ์ทจ์ํฉ๋๋ค.
REST v1
- ๋ด๋ณด๋ด๊ธฐ์ ์ฌ์ฉํ ๋ฒํท์ ๋ง๋ญ๋๋ค.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
์ด ๋จ๊ณ๋ ํ์ ์ฌํญ์ ์๋์ง๋ง ๋ค๋ฅธ ๋ฐ์ดํฐ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ด์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ ์ ๊ทน ๊ถ์ฅ๋ฉ๋๋ค.
- ์ธ์คํด์ค์ ๋ฒํท์
legacyBucketWriter
IAM ์ญํ ์ ์ ๊ณตํฉ๋๋ค. IAM ๊ถํ ์ค์ ์ ๋ํ ๋์๋ง์ IAM ๊ถํ ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์. -
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ด๋ณด๋ ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
- bucket_name: Cloud Storage ๋ฒํท ์ด๋ฆ
- path_to_csv_file: CSV ํ์ผ์ ๊ฒฝ๋ก
- database_name: Cloud SQL ์ธ์คํด์ค ๋ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ
- offload: ์๋ฒ๋ฆฌ์ค ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. ์๋ฒ๋ฆฌ์ค ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด
true
๋ก ์ค์ ํฉ๋๋ค. - select_query: ๋ด๋ณด๋ผ SQL ์ฟผ๋ฆฌ(์ ํ์ฌํญ)
- escape_character: ์ด์ค์ผ์ดํ ์ฒ๋ฆฌ๋์ด์ผ ํ๋ ๋ฐ์ดํฐ ๋ฌธ์ ์์ ํ์๋์ด์ผ ํ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ 16์ง์ ASCII ์ฝ๋์ ๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "22"๋ ํฐ๋ฐ์ดํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- quote_character: ๋ฌธ์์ด ๋ฐ์ดํฐ ์ ํ์ด ์๋ ์ด์ ๊ฐ์ ๋ฌถ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ 16์ง์ ASCII ์ฝ๋์ ๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "22"๋ ํฐ๋ฐ์ดํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- fields_terminated_by: ์ด ๊ฐ์ ๋ถํ ํ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ 16์ง์ ASCII ์ฝ๋์ ๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "2C"๋ ์ผํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- lines_terminated_by: ์ค ๋ ์ฝ๋๋ฅผ ๋ถํ ํ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ 16์ง์ ASCII ์ฝ๋์ ๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "0A"๋ ์ค๋ฐ๊ฟ์ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "exportContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "databases": "database_name", "offload": true | false "csvExportOptions": { "selectQuery":"select_query", "escapeCharacter":"escape_character", "quoteCharacter":"quote_character", "fieldsTerminatedBy":"fields_terminated_by", "linesTerminatedBy":"lines_terminated_by" } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
databases
์์ฑ์ ์ฌ์ฉํ์ฌ ์ ํํ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง ์ง์ ํด์ผ ํ๋ฉฐ, select ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์ผํด์ผ ํฉ๋๋ค. - ์ด์ ์ ์ค์ ํ IAM ๊ถํ์ ์ ์งํ ํ์๊ฐ ์์ผ๋ฉด ์ง๊ธ ์ญ์ ํฉ๋๋ค.
REST v1beta4
- ๋ด๋ณด๋ด๊ธฐ์ ์ฌ์ฉํ ๋ฒํท์ ๋ง๋ญ๋๋ค.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
์ด ๋จ๊ณ๋ ํ์ ์ฌํญ์ ์๋์ง๋ง ๋ค๋ฅธ ๋ฐ์ดํฐ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ด์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ ์ ๊ทน ๊ถ์ฅ๋ฉ๋๋ค.
- ์ธ์คํด์ค์ ๋ฒํท์
storage.objectAdmin
IAM ์ญํ ์ ์ ๊ณตํฉ๋๋ค. IAM ๊ถํ ์ค์ ์ ๋ํ ๋์๋ง์ IAM ๊ถํ ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์. -
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ด๋ณด๋ ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
- bucket_name: Cloud Storage ๋ฒํท ์ด๋ฆ
- path_to_csv_file: CSV ํ์ผ์ ๊ฒฝ๋ก
- database_name: Cloud SQL ์ธ์คํด์ค ๋ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ
- offload: ์๋ฒ๋ฆฌ์ค ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. ์๋ฒ๋ฆฌ์ค ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด
true
๋ก ์ค์ ํฉ๋๋ค. - select_query: ๋ด๋ณด๋ผ SQL ์ฟผ๋ฆฌ(์ ํ์ฌํญ)
- escape_character: ์ด์ค์ผ์ดํ ์ฒ๋ฆฌ๋์ด์ผ ํ๋ ๋ฐ์ดํฐ ๋ฌธ์ ์์ ํ์๋์ด์ผ ํ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ ASCII 16์ง์ ํ์์ด์ด์ผ ํฉ๋๋ค ์๋ฅผ ๋ค์ด "22"๋ ํฐ๋ฐ์ดํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- quote_character: ๋ฌธ์์ด ๋ฐ์ดํฐ ์ ํ์ ์ด ๊ฐ์ ๋ฌถ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ ASCII 16์ง์ ํ์์ด์ด์ผ ํฉ๋๋ค ์๋ฅผ ๋ค์ด "22"๋ ํฐ๋ฐ์ดํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- fields_terminated_by: ์ด ๊ฐ์ ๋ถํ ํ๋ ๋ฌธ์๋ฅผ ์ง์ ํฉ๋๋ค. ์ด ์ธ์ ๊ฐ์ ASCII 16์ง์ ํ์์ด์ด์ผ ํฉ๋๋ค ์๋ฅผ ๋ค์ด "2C"๋ ์ผํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- lines_terminated_by: ์ค ๋ ์ฝ๋๋ฅผ ๋ถํ ํ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ ASCII 16์ง์ ํ์์ด์ด์ผ ํฉ๋๋ค ์๋ฅผ ๋ค์ด "0A"๋ ์ค๋ฐ๊ฟ์ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "exportContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "databases": "database_name", "offload": true | false "csvExportOptions": { "selectQuery": "select_query", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
databases
์์ฑ์ ์ฌ์ฉํ์ฌ ์ ํํ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง ์ง์ ํด์ผ ํ๋ฉฐ, select ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์ผํด์ผ ํฉ๋๋ค. - ์ด์ ์ ์ค์ ํ IAM ์ญํ ์ ์ ์งํ ํ์๊ฐ ์์ผ๋ฉด ์ง๊ธ ์ทจ์ํฉ๋๋ค.
CSV ๋ด๋ณด๋ด๊ธฐ ํ์ผ ํ์ ๋ง์ถค์ค์
gcloud
๋๋ REST API๋ฅผ ์ฌ์ฉํ์ฌ CSV ํ์ผ ํ์์ ๋ง์ถค์ค์ ํ ์ ์์ต๋๋ค. ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ํํ ๋ ๋ค์ ํ์ ์ง์ ์ต์
์ ์ง์ ํ ์ ์์ต๋๋ค.
CSV ์ต์ | ๊ธฐ๋ณธ๊ฐ | gcloud ํ๋๊ทธ | REST API ์์ฑ | ์ค๋ช |
---|---|---|---|---|
Esc |
ํ์ผ ๊ตฌ๋ถ ๊ธฐํธ์ ASCII 16์ง์ ์ฝ๋์ ๋๋ค. |
--escape |
escapeCharacter |
์ด์ค์ผ์ดํ ์ฒ๋ฆฌํด์ผ ํ๋ ๋ฐ์ดํฐ ๋ฌธ์ ์์ ํ์๋๋ ๋ฌธ์์ ๋๋ค. MySQL ๋ฐ PostgreSQL์์๋ง ์ง์๋ฉ๋๋ค. |
Quote |
ํฐ๋ฐ์ดํ์ ASCII 16์ง์ ์ฝ๋์ ๋๋ค. |
--quote |
quoteCharacter |
๋ฌธ์์ด ๋ฐ์ดํฐ ์ ํ์ ์ด ๊ฐ์ ๋ฌถ๋ ๋ฌธ์์ ๋๋ค. MySQL ๋ฐ PostgreSQL์์๋ง ์ง์๋ฉ๋๋ค. |
ํ๋ ๊ตฌ๋ถ ๊ธฐํธ |
์ผํ์ ASCII 16์ง์ ์ฝ๋์ ๋๋ค. |
--fields-terminated-by |
fieldsTerminatedBy |
์ด ๊ฐ์ ๋ถํ ํ๋ ๋ฌธ์์ ๋๋ค. MySQL ๋ฐ PostgreSQL์์๋ง ์ง์๋ฉ๋๋ค. |
์ค๋ฐ๊ฟ ๋ฌธ์ |
์ค๋ฐ๊ฟ์ ASCII 16์ง์ ์ฝ๋์ ๋๋ค. |
--lines-terminated-by |
linesTerminatedBy |
์ค ๋ ์ฝ๋๋ฅผ ๋ถํ ํ๋ ๋ฌธ์์ ๋๋ค. MySQL์์๋ง ์ง์๋ฉ๋๋ค. |
์๋ฅผ ๋ค์ด ์ด๋ฌํ ์ธ์๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ gcloud
๋ช
๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.
gcloud sql export csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --offload \ --query=SELECT_QUERY \ --quote="22" \ --escape="5C" \ --fields-terminated-by="2C" \ --lines-terminated-by="0A"
์ด์ ์์ํ๋ REST API ์์ฒญ ๋ณธ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{ "exportContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "databases": "DATABASE_NAME", "offload": true, "csvExportOptions": { "selectQuery": "SELECT_QUERY", "escapeCharacter": "5C", "quoteCharacter": "22", "fieldsTerminatedBy": "2C", "linesTerminatedBy": "0A" } } }
๊ธฐ๋ณธ์ ์ผ๋ก CSV ์ถ๋ ฅ์ ๊ฒฐ๊ณผ๋ ํ์ค CSV ํ์์ ๋๋ค. Cloud SQL์์ ์ ๊ณตํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์ต์ ์ด ํ์ํ ๊ฒฝ์ฐ psql ํด๋ผ์ด์ธํธ์์ ๋ค์ ๋ฌธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
\copy [table_name] TO '[csv_file_name].csv' WITH (FORMAT csv, ESCAPE '[escape_character]', QUOTE '[quote_character]', DELIMITER '[delimiter_character]', ENCODING 'UTF8', NULL '[null_marker_string]');
PostgreSQL์ฉ Cloud SQL๋ก ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
PostgreSQL์ฉ Cloud SQL๋ก ๊ฐ์ ธ์ค๊ธฐ์ ํ์ํ ์ญํ ๋ฐ ๊ถํ
๋ฐ์ดํฐ๋ฅผ Cloud Storage์์ Cloud SQL๋ก ๊ฐ์ ธ์ค๋ ค๋ฉด ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์์ํ๋ ์ฌ์ฉ์์๊ฒ ๋ค์ ์ญํ ์ค ํ๋๊ฐ ์์ด์ผ ํฉ๋๋ค.
- Cloud SQL ๊ด๋ฆฌ์ ์ญํ
- ๋ค์ ๊ถํ์ด ํฌํจ๋ ๋ง์ถค ์ญํ :
cloudsql.instances.get
cloudsql.instances.import
๋ํ Cloud SQL ์ธ์คํด์ค์ ์๋น์ค ๊ณ์ ์๋ ๋ค์ ์ญํ ์ค ํ๋๊ฐ ์์ด์ผ ํฉ๋๋ค.
storage.objectAdmin
IAM ์ญํ- ๋ค์ ๊ถํ์ด ํฌํจ๋ ๋ง์ถค ์ญํ :
storage.objects.get
storage.objects.list
(๋์์ ํ์ผ์ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ์๋ง)
IAM ์ญํ ์ ๋ํ ๋์๋ง์ Identity and Access Management๋ฅผ ์ฐธ์กฐํ์ธ์.
CSV ํ์ผ์์ PostgreSQL์ฉ Cloud SQL๋ก ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
- ๊ฐ์ ธ์ค๊ธฐ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ด Cloud SQL ์ธ์คํด์ค์ ์กด์ฌํด์ผ ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
- CSV ํ์ผ์ CSV ํ์ผ ํ์ ์๊ตฌ์ฌํญ์ ์ค์ํด์ผ ํฉ๋๋ค.
CSV ํ์ผ ํ์ ์๊ตฌ์ฌํญ
CSV ํ์ผ์ ๊ฐ ๋ฐ์ดํฐ ํ์ ์ค์ด ํ๋์ฉ ์๊ณ ์ผํ๋ก ๊ตฌ๋ถ๋ ํ๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
CSV ํ์ผ์ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์คํด์ค๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ ํ์ผ ์ ํ์์ ๊ฐ์ ธ์ค๊ธฐ์ ์ฌ์ฉํ ๋ฒํท๊ณผ CSV ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์
๋ ฅํฉ๋๋ค. ๋๋ ํ์ผ์ ์ฐพ์ผ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๋๋ฌ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์์น ์น์ ์ ๋ชฉ๋ก์์ ๋ฒํท ์ด๋ฆ์ ๋๋ธํด๋ฆญํฉ๋๋ค.
- ๋ชฉ๋ก์์ ํ์ผ์ ์ ํํฉ๋๋ค.
- ์ ํ์ ํด๋ฆญํฉ๋๋ค.
์์ถ๋ ํ์ผ(
.gz
) ๋๋ ์์ถ๋์ง ์์ ํ์ผ(.csv
)์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. - ํ์ ์น์ ์์ CSV๋ฅผ ์ ํํฉ๋๋ค.
- Cloud SQL ์ธ์คํด์ค์์ CSV ํ์ผ์ ๊ฐ์ ธ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ํ ์ด๋ธ์ ์ง์ ํฉ๋๋ค.
- ๊ฐ์ ธ์ค๊ธฐ ์์ ์ ์ฌ์ฉ์๋ฅผ ์ ํ์ฌํญ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค.
- ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์์ํฉ๋๋ค.
gcloud
- Cloud Storage ๋ฒํท์ ๋ง๋ญ๋๋ค.
ํ์ผ์ ๋ฒํท์ ์ ๋ก๋ํฉ๋๋ค.
๋ฒํท์ ํ์ผ ์ ๋ก๋ํ๊ธฐ์ ๋ํ ๋์๋ง์ ๊ฐ์ฒด ์ ๋ก๋๋ฅผ ์ฐธ์กฐํ์ธ์.
- CSV ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฒํท์ ์ ๋ก๋ํฉ๋๋ค.
- ๋ด๋ณด๋ผ Cloud SQL ์ธ์คํด์ค์ ์๋น์ค ๊ณ์ ์ ์ฐพ์ต๋๋ค. ์ธ์คํด์ค ์ด๋ฆ์ ์ฌ์ฉํด
gcloud sql instances describe
๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ๋ฉ๋๋ค. ์ถ๋ ฅ์์serviceAccountEmailAddress
ํ๋๋ฅผ ์ฐพ์ต๋๋ค.gcloud sql instances describe INSTANCE_NAME
- serviceAccountEmailAddress ํ๋๋ฅผ ๋ณต์ฌํฉ๋๋ค.
gcloud storage buckets add-iam-policy-binding
์ ์ฌ์ฉํ์ฌ ๋ฒํท์ Cloud SQL ์ธ์คํด์ค ์๋น์ค ๊ณ์ ์storage.objectAdmin
IAM ์ญํ ์ ๋ถ์ฌํฉ๋๋ค. IAM ๊ถํ ์ค์ ์ ๋ํ ๋์๋ง์ IAM ๊ถํ ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.- ํ์ผ์ ๊ฐ์ ธ์ต๋๋ค.
gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --table=TABLE_NAME
import csv
๋ช ๋ น์ด ์ฌ์ฉ์ ๋ํ ์์ธํ ๋ด์ฉ์sql import csv
๋ช ๋ น์ด ์ฐธ์กฐ ํ์ด์ง๋ฅผ ํ์ธํ์ธ์. - ์ด์ ์ ์ค์ ํ IAM ๊ถํ์ ์ ์งํ ํ์๊ฐ ์์ผ๋ฉด
gcloud storage buckets remove-iam-policy-binding
์ ์ฌ์ฉํ์ฌ ์ญ์ ํฉ๋๋ค.
REST v1
- Cloud Storage ๋ฒํท์ ๋ง๋ญ๋๋ค.
ํ์ผ์ ๋ฒํท์ ์ ๋ก๋ํฉ๋๋ค.
๋ฒํท์ ํ์ผ ์ ๋ก๋ํ๊ธฐ์ ๋ํ ๋์๋ง์ ๊ฐ์ฒด ์ ๋ก๋๋ฅผ ์ฐธ์กฐํ์ธ์.
- ์ธ์คํด์ค์ ๋ฒํท์
legacyBucketWriter
๋ฐobjectViewer
IAM ์ญํ ์ ์ ๊ณตํฉ๋๋ค. IAM ๊ถํ ์ค์ ์ ๋ํ ๋์๋ง์ IAM ๊ถํ ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์. - ํ์ผ์ ๊ฐ์ ธ์ต๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
- bucket_name: Cloud Storage ๋ฒํท ์ด๋ฆ
- path_to_csv_file: CSV ํ์ผ์ ๊ฒฝ๋ก
- database_name: Cloud SQL ์ธ์คํด์ค ๋ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ
- table_name: ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ด๋ฆ
- escape_character: ์ด์ค์ผ์ดํ ์ฒ๋ฆฌ๋์ด์ผ ํ๋ ๋ฐ์ดํฐ ๋ฌธ์ ์์ ํ์๋์ด์ผ ํ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ 16์ง์ ASCII ์ฝ๋์ ๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "22"๋ ํฐ๋ฐ์ดํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- quote_character: ๋ฌธ์์ด ๋ฐ์ดํฐ ์ ํ์ ์ด ๊ฐ์ ๋ฌถ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ 16์ง์ ASCII ์ฝ๋์ ๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "22"๋ ํฐ๋ฐ์ดํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- fields_terminated_by: ์ด ๊ฐ์ ๋ถํ ํ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ 16์ง์ ASCII ์ฝ๋์ ๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "2C"๋ ์ผํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- lines_terminated_by: ์ค ๋ ์ฝ๋๋ฅผ ๋ถํ ํ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ 16์ง์ ASCII ์ฝ๋์ ๋ฌธ์์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "0A"๋ ์ค๋ฐ๊ฟ์ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "importContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "database": "database_name", "csvImportOptions": { "table": "table_name", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์ด ์์ฒญ์ ์ํ ํ๋ผ๋ฏธํฐ์ ์ ์ฒด ๋ชฉ๋ก์ instances:import ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์. - ์ด์ ์ ์ค์ ํ IAM ๊ถํ์ ์ ์งํ ํ์๊ฐ ์์ผ๋ฉด ์ญ์ ํฉ๋๋ค.
REST v1beta4
- Cloud Storage ๋ฒํท์ ๋ง๋ญ๋๋ค.
ํ์ผ์ ๋ฒํท์ ์ ๋ก๋ํฉ๋๋ค.
๋ฒํท์ ํ์ผ ์ ๋ก๋ํ๊ธฐ์ ๋ํ ๋์๋ง์ ๊ฐ์ฒด ์ ๋ก๋๋ฅผ ์ฐธ์กฐํ์ธ์.
- ์ธ์คํด์ค์ ๋ฒํท์
storage.objectAdmin
IAM ์ญํ ์ ์ ๊ณตํฉ๋๋ค. IAM ๊ถํ ์ค์ ์ ๋ํ ๋์๋ง์ IAM ๊ถํ ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์. - ํ์ผ์ ๊ฐ์ ธ์ต๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- instance-id: ์ธ์คํด์ค ID
- bucket_name: Cloud Storage ๋ฒํท ์ด๋ฆ
- path_to_csv_file: CSV ํ์ผ์ ๊ฒฝ๋ก
- database_name: Cloud SQL ์ธ์คํด์ค ๋ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ
- table_name: ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ด๋ฆ
- escape_character: ์ด์ค์ผ์ดํ ์ฒ๋ฆฌ๋์ด์ผ ํ๋ ๋ฐ์ดํฐ ๋ฌธ์ ์์ ํ์๋์ด์ผ ํ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ ASCII 16์ง์ ํ์์ด์ด์ผ ํฉ๋๋ค ์๋ฅผ ๋ค์ด "22"๋ ํฐ๋ฐ์ดํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- quote_character: ๋ฌธ์์ด ๋ฐ์ดํฐ ์ ํ์ ์ด ๊ฐ์ ๋ฌถ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ ASCII 16์ง์ ํ์์ด์ด์ผ ํฉ๋๋ค ์๋ฅผ ๋ค์ด "22"๋ ํฐ๋ฐ์ดํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- fields_terminated_by: ์ด ๊ฐ์ ๋ถํ ํ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ ASCII 16์ง์ ํ์์ด์ด์ผ ํฉ๋๋ค ์๋ฅผ ๋ค์ด "2C"๋ ์ผํ๋ฅผ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
- lines_terminated_by: ์ค ๋ ์ฝ๋๋ฅผ ๋ถํ ํ๋ ๋ฌธ์์ ๋๋ค. ์ด ์ธ์ ๊ฐ์ ASCII 16์ง์ ํ์์ด์ด์ผ ํฉ๋๋ค ์๋ฅผ ๋ค์ด "0A"๋ ์ค๋ฐ๊ฟ์ ๋ํ๋ ๋๋ค. (์ ํ์ฌํญ)
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "importContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "database": "database_name", "csvImportOptions": { "table": "table_name", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
์ด ์์ฒญ์ ์ํ ํ๋ผ๋ฏธํฐ์ ์ ์ฒด ๋ชฉ๋ก์ instances:import ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์. - ์ด์ ์ ์ค์ ํ IAM ๊ถํ์ ์ ์งํ ํ์๊ฐ ์์ผ๋ฉด ์ญ์ ํฉ๋๋ค.
PostgreSQL์ฉ Cloud SQL์ CSV ํ์ผ ํ์ ๋ง์ถค์ค์
gcloud
๋๋ REST API๋ฅผ ์ฌ์ฉํ์ฌ CSV ํ์ผ ํ์์ ๋ง์ถค์ค์ ํ ์ ์์ต๋๋ค.
์ํ gcloud
๋ช
๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --table=TABLE_NAME \ --quote="22" \ --escape="5C" \ --fields-terminated-by="2C" \ --lines-terminated-by="0A"
์ด์ ์์ํ๋ REST API ์์ฒญ ๋ณธ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{ "importContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "database": "DATABASE_NAME", "csvImportOptions": { "table": "TABLE_NAME", "escapeCharacter": "5C", "quoteCharacter": "22", "fieldsTerminatedBy": "2C", "linesTerminatedBy": "0A" } } }
ERROR_RDBMS
์ค๋ฅ๊ฐ ๋ํ๋๋ฉด ํ
์ด๋ธ์ด ์๋์ง ํ์ธํฉ๋๋ค. ํ
์ด๋ธ์ด ์์ผ๋ฉด ๋ฒํท์ ๋ํ ์ฌ๋ฐ๋ฅธ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค. Cloud Storage์์ ์ก์ธ์ค ์ ์ด๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ก์ธ์ค์ ์ด ๋ชฉ๋ก ๋ง๋ค๊ธฐ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค์ ๋จ๊ณ
- ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ๋ด๋ณด๋ด๊ธฐ ์์ ์ํ ํ์ธ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
- ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ๋ด๋ณด๋ด๊ธฐ ๊ถ์ฅ์ฌํญ ์์ธํ ์์๋ณด๊ธฐ
- ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ๋ด๋ณด๋ด๊ธฐ์ ๋ํด ์๋ ค์ง ๋ฌธ์