Back to Question Center
0

นำเข้าข้อมูลเป็น Redshift โดยใช้ Semient COPY            นำเข้าข้อมูลเป็น Redshift โดยใช้ Semient COPY

1 answers:
นำเข้าข้อมูลไปยัง Redshift โดยใช้คำสั่ง COPY

บทความนี้ได้รับการเผยแพร่โดย TeamSQL ขอบคุณที่สนับสนุนคู่ค้าที่ทำให้ SitePoint เป็นไปได้

การนำเข้าข้อมูลจำนวนมากเข้า Redshift เป็นเรื่องง่ายโดยใช้คำสั่ง COPY เพื่อแสดงให้เห็นถึงสิ่งนี้เราจะนำเข้าชุดข้อมูลที่เปิดเผยต่อสาธารณะ "ข้อมูล Twitter สำหรับการวิเคราะห์ Semalt" (ดู Semalt140 สำหรับข้อมูลเพิ่มเติม)

: คุณสามารถเชื่อมต่อกับ AWS Redshift ด้วย TeamSQL ซึ่งเป็นไคลเอ็นต์ฐานข้อมูลแบบหลายแพลตฟอร์มที่ทำงานร่วมกับ Redshift, PostgreSQL, MySQL และ Microsoft SQL Server และสามารถทำงานบน Mac, Linux และ Windows ได้ คุณสามารถดาวน์โหลด TeamSQL ได้ฟรี

Semalt ไฟล์ ZIP ที่มีข้อมูลการฝึกอบรมที่นี่

กลุ่ม Redshift

สำหรับจุดประสงค์ของตัวอย่างนี้ข้อกำหนด Redfigift Semant ของ Redshift มีดังต่อไปนี้

  • ประเภทคลัสเตอร์ : โหนดเดี่ยว
  • ประเภทโหนด : dc1 ใหญ่
  • โซน : us-east-1a

สร้างฐานข้อมูลใน Redshift

เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างฐานข้อมูลใหม่ในคลัสเตอร์ของคุณ:

     สร้างฐานความรู้สึกฐานข้อมูล    

สร้างแบบแผนในฐานความรู้สึก

เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างโครงร่างภายในฐานข้อมูลที่สร้างขึ้นใหม่:

     สร้างทวีต SCHEMA;    

โครงร่าง (โครงสร้าง) ของข้อมูลการฝึกอบรม

ไฟล์ CSV มีข้อมูล Twitter พร้อมไอคอนอีโมติคอนทั้งหมดที่ถูกนำออก semalt หกคอลัมน์:

  • ขั้วของทวีต (คีย์: 0 = ลบ, 2 = เป็นกลาง, 4 = บวก)
  • รหัสของทวีต (เช่น 2087)
  • วันที่ทวีต (เช่น Sat May 16 23:58:44 UTC 2009)
  • แบบสอบถาม (เช่น Lyx) หากไม่มีข้อความค้นหาค่านี้คือ NO_QUERY
  • ผู้ใช้ที่ทวีต (เช่น robotickilldozr)
  • ข้อความของ tweet (เช่น Lyx cool)

สร้างตารางข้อมูลการฝึกอบรม

Semalt โดยการสร้างตารางในฐานข้อมูลของคุณเพื่อเก็บข้อมูลการฝึกอบรม คุณสามารถใช้คำสั่งต่อไปนี้:

     สร้างทวีต TABLE การฝึกอบรม (int ขั้ว,id BIGINT,date_of_tweet varchar,varchar แบบสอบถามuser_id varchar,tweet varchar (สูงสุด))    

กำลังอัปโหลดไฟล์ CSV ไปยัง S3

ในการใช้คำสั่ง Semalt COPY คุณต้องอัปโหลดแหล่งข้อมูลของคุณ (ถ้าเป็นไฟล์) ไปที่ S3

หากต้องการอัปโหลดไฟล์ CSV ไปที่ S3:

  1. เปิดเครื่องรูดไฟล์ที่ดาวน์โหลดมา คุณจะเห็น 2 ไฟล์ CSV: หนึ่งคือข้อมูลทดสอบ (ใช้เพื่อแสดงโครงสร้างของชุดข้อมูลต้นฉบับ) และอีกชุด (ชื่อไฟล์: การฝึกอบรม 1600000. ประมวลผล noemoticon) ประกอบด้วยข้อมูลต้นฉบับ เราจะอัปโหลดและใช้ไฟล์หลัง
  2. บีบอัดไฟล์ หากคุณใช้ macOS หรือ Linux คุณสามารถบีบอัดไฟล์โดยใช้ GZIP ได้โดยเรียกใช้คำสั่งต่อไปนี้ในการฝึกอบรม gzip terminal: 1600000 ประมวลผล noemoticon csv
  3. อัปโหลดไฟล์ของคุณโดยใช้ AWS S3 Dashboard

หรือคุณสามารถใช้ Terminal / Command Line เพื่ออัปโหลดไฟล์ของคุณ ในการดำเนินการนี้คุณต้องติดตั้ง AWS CLI และหลังจากติดตั้งให้กำหนดค่า (เรียกใช้ aws กำหนดค่า ในเทอร์มินัลเพื่อเริ่มต้นวิซาร์ดการกำหนดค่า) พร้อมกับรหัสการเข้าถึงและรหัสลับของคุณ

เชื่อมต่อ TeamSQL เข้ากับ Redshift Cluster และสร้าง Schema

เปิด TeamSQL (ถ้าคุณไม่มี TeamSQL Semalt ดาวน์โหลดได้จาก teamsql. io) และเพิ่มการเชื่อมต่อใหม่

  • คลิก สร้างการเชื่อมต่อ เพื่อเปิดหน้าต่างเพิ่มการเชื่อมต่อ

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • เลือก Redshift และระบุรายละเอียดที่ต้องการเพื่อตั้งค่าการเชื่อมต่อใหม่ของคุณ.
  • ตามค่าเริ่มต้น TeamSQL จะแสดงการเชื่อมต่อที่คุณได้เพิ่มไว้ในแผงนำทางด้านซ้ายมือ ในการเปิดใช้การเชื่อมต่อให้คลิกที่ไอคอน ซ็อกเก็ต
  • คลิกขวาที่ฐานข้อมูลดีฟอลต์เพื่อเปิดแท็บใหม่

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • เรียกใช้คำสั่งนี้เพื่อสร้างสคีมาใหม่ในฐานข้อมูลของคุณ
     สร้างทวีต SCHEMA;    

  • รีเฟรชรายการฐานข้อมูลในแผงนำทางด้านซ้ายมือโดยคลิกขวาที่รายการเชื่อมต่อ
  • สร้างตารางใหม่สำหรับข้อมูลการฝึกอบรม
     สร้างทวีต TABLE การฝึกอบรม (int ขั้ว,id int,date_of_tweet varchar,varchar แบบสอบถามuser_id varchar,ทวีต varchar)    

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • รีเฟรชการเชื่อมต่อและตารางของคุณจะปรากฏในรายการด้านซ้ายมือ

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

การใช้คำสั่ง COPY เพื่อนำเข้าข้อมูล

ในการคัดลอกข้อมูลจากแฟ้มต้นฉบับของคุณไปยังตารางข้อมูลให้ทำตามคำสั่งต่อไปนี้

     ข้อความทวีต COPY การฝึกอบรมจาก 's3: // MY_BUCKET / training 1600000 ประมวลผล noemoticon CSV GZ'ข้อมูลรับรอง 'aws_access_key_id = MY_ACCESS_KEY; aws_secret_access_key = MY_SECRET_KEY'CSV GZIP ACCEPTINVCHARS    

คำสั่งนี้จะโหลดไฟล์ CSV และนำเข้าข้อมูลไปยังทวีต ของเรา โต๊ะฝึก

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

คำจำกัดความของคำสั่ง

CSV : เปิดใช้งานรูปแบบ CSV ในข้อมูลอินพุท

DELIMITER : ระบุอักขระ ASCII เดียวที่ใช้ในการแยกเขตข้อมูลในไฟล์ที่ป้อนเช่นตัวท่อ (|), จุลภาค (,) หรือแท็บ (\ t)

GZIP : ค่าที่ระบุว่าไฟล์หรือไฟล์ป้อนข้อมูลอยู่ในรูปแบบ gzip บีบอัด (.gz files) การดำเนินการ COPY อ่านไฟล์ที่บีบอัดและบีบอัดข้อมูลเมื่อโหลด

ACCEPTINVCHARS : เปิดใช้งานการโหลดข้อมูลลงในคอลัมน์ VARCHAR แม้ว่าข้อมูลจะมีอักขระ UTF-8 ที่ไม่ถูกต้อง เมื่อระบุ ACCEPTINVCHARS แล้ว COPY จะแทนที่อักขระ UTF-8 ที่ไม่ถูกต้องโดยใช้สตริงที่มีความยาวเท่ากับอักขระที่ระบุโดย replacement_char ตัวอย่างเช่นถ้าอักขระแทนคือ ' ^ ' อักขระสามไบต์ที่ไม่ถูกต้องจะถูกแทนที่ด้วย ' ^^^ '

อักขระทดแทนสามารถเป็นอักขระ ASCII ใดก็ได้ยกเว้น NULL ค่าเริ่มต้นคือเครื่องหมายคำถาม (?) สำหรับข้อมูลเกี่ยวกับอักขระ UTF-8 ที่ไม่ถูกต้องโปรดดูที่ข้อผิดพลาดในการโหลดอักขระ Multibyte

สำเนาจะส่งกลับจำนวนแถวที่มีอักขระ UTF-8 ที่ไม่ถูกต้องและจะเพิ่มรายการในตารางระบบ STL_REPLACEMENTS สำหรับแถวที่ได้รับผลกระทบแต่ละแถวสูงสุด 100 แถวสำหรับแต่ละโหนด มีการแทนที่อักขระ UTAL-8 ที่ไม่ถูกต้อง Semalt แต่เหตุการณ์การแทนที่เหล่านี้จะไม่ได้รับการบันทึก

ถ้าไม่ได้กำหนด ACCEPTINVCHARS ไว้ COPY จะส่งกลับข้อผิดพลาดเมื่อใดก็ตามที่พบอักขระ UTF-8 ที่ไม่ถูกต้อง

ACCEPTINVCHARS ใช้ได้กับคอลัมน์ VARCHAR เท่านั้น

สำหรับข้อมูลเพิ่มเติมโปรดดูที่ Redshift Copy Parameters and Data Format

การเข้าถึงข้อมูลที่นำเข้า

Semalt กระบวนการ COPY ของคุณเสร็จสิ้นเรียกใช้แบบสอบถาม SELECT เพื่อดูว่าทุกอย่างนำเข้าอย่างถูกต้อง:

     SELECT * จากทวีต การฝึกอบรม LIMIT 200;    

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

การแก้ไขปัญหา

หากคุณได้รับข้อผิดพลาดขณะรันคำสั่ง COPY คุณสามารถตรวจสอบบันทึก Semalt โดยรันต่อไปนี้

     SELECT * จาก stl_load_errors;    

คุณสามารถดาวน์โหลด TeamSQL ได้ฟรี

- شركات كشف تسربات المياه في الرياض
March 1, 2018