Lỗi khóa trùng lặp python

Tải dữ liệu vào bảng từ tệp dữ liệu hoặc từ bảng Amazon DynamoDB. Các tệp có thể nằm trong bộ chứa Amazon Simple Storage Service (Amazon S3), cụm Amazon EMR hoặc máy chủ từ xa được truy cập bằng kết nối Secure Shell (SSH)

Các bảng bên ngoài của Amazon Redshift Spectrum ở chế độ chỉ đọc. Bạn không thể SAO CHÉP vào một bảng bên ngoài

Lệnh COPY nối thêm dữ liệu đầu vào mới vào bất kỳ hàng hiện có nào trong bảng

Kích thước tối đa của một hàng đầu vào từ bất kỳ nguồn nào là 4 MB

Để sử dụng lệnh COPY, bạn phải có đặc quyền INSERT cho bảng Amazon Redshift

COPY cú pháp

COPY table-name 
[ column-list ]
FROM data_source
authorization
[ [ FORMAT ] [ AS ] data_format ] 
[ parameter [ argument ] [, .. ] ]

COPY tổng quan về cú pháp

Bạn có thể thực hiện thao tác SAO CHÉP chỉ với ba tham số. tên bảng, nguồn dữ liệu và quyền truy cập dữ liệu

Amazon Redshift mở rộng chức năng của lệnh COPY để cho phép bạn tải dữ liệu ở một số định dạng dữ liệu từ nhiều nguồn dữ liệu, kiểm soát quyền truy cập vào dữ liệu tải, quản lý chuyển đổi dữ liệu và quản lý hoạt động tải

Phần này trình bày các tham số lệnh COPY cần thiết và nhóm các tham số tùy chọn theo chức năng. Các chủ đề tiếp theo mô tả từng tham số và giải thích cách các tùy chọn khác nhau hoạt động cùng nhau. Bạn cũng có thể trực tiếp đến phần mô tả tham số bằng cách sử dụng danh sách tham số theo thứ tự bảng chữ cái

Thông số bắt buộc

Lệnh COPY yêu cầu ba yếu tố

Lệnh COPY đơn giản nhất sử dụng định dạng sau

COPY table-name 
FROM data-source
authorization;

Ví dụ sau tạo một bảng có tên là CATDEMO, sau đó tải bảng này với dữ liệu mẫu từ một tệp dữ liệu trong Amazon S3 có tên là category_pipe.txt

create table catdemo(catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50));

Trong ví dụ sau, nguồn dữ liệu cho lệnh COPY là một tệp dữ liệu có tên category_pipe.txt trong thư mục tickit của bộ chứa Amazon S3 có tên awssampledbuswest2. Lệnh COPY được phép truy cập bộ chứa Amazon S3 thông qua vai trò AWS Identity and Access Management (IAM). Nếu cụm của bạn có một vai trò IAM hiện có với quyền truy cập Amazon S3 được đính kèm, thì bạn có thể thay thế Tên tài nguyên Amazon (ARN) của vai trò đó trong lệnh COPY sau và chạy nó

copy catdemo
from 's3://awssampledbuswest2/tickit/category_pipe.txt'
iam_role 'arn:aws:iam:::role/'
region 'us-west-2';

Để biết các bước tạo vai trò IAM, hãy xem Bước 2. Tạo Vai trò IAM trong Hướng dẫn Bắt đầu Amazon Redshift. Để biết hướng dẫn đầy đủ về cách sử dụng lệnh COPY để tải dữ liệu mẫu, bao gồm hướng dẫn tải dữ liệu từ các khu vực AWS khác, hãy xem Bước 6. Tải dữ liệu mẫu từ Amazon S3 trong Hướng dẫn bắt đầu sử dụng Amazon Redshift

tên bảng

Tên của bảng đích cho lệnh COPY. Bảng phải tồn tại trong cơ sở dữ liệu. Bảng có thể là tạm thời hoặc liên tục. Lệnh COPY nối thêm dữ liệu đầu vào mới vào bất kỳ hàng hiện có nào trong bảng

TỪ nguồn dữ liệu

Vị trí của dữ liệu nguồn sẽ được tải vào bảng đích. Tệp kê khai có thể được chỉ định với một số nguồn dữ liệu

Kho lưu trữ dữ liệu được sử dụng phổ biến nhất là bộ chứa Amazon S3. Bạn cũng có thể tải từ các tệp dữ liệu nằm trong cụm Amazon EMR, phiên bản Amazon EC2 hoặc máy chủ từ xa mà cụm của bạn có thể truy cập bằng kết nối SSH hoặc bạn có thể tải trực tiếp từ bảng DynamoDB

ủy quyền

Một mệnh đề chỉ ra phương thức mà cụm của bạn sử dụng để xác thực và ủy quyền truy cập các tài nguyên AWS khác. Lệnh COPY cần được ủy quyền để truy cập dữ liệu trong một tài nguyên AWS khác, bao gồm trong Amazon S3, Amazon EMR, Amazon DynamoDB và Amazon EC2. Bạn có thể cung cấp quyền đó bằng cách tham chiếu vai trò IAM được đính kèm với cụm của bạn hoặc bằng cách cung cấp ID khóa truy cập và khóa truy cập bí mật cho người dùng IAM

thông số tùy chọn

Bạn có thể tùy chọn chỉ định cách COPY ánh xạ dữ liệu trường tới các cột trong bảng đích, xác định các thuộc tính dữ liệu nguồn để cho phép lệnh COPY đọc và phân tích cú pháp dữ liệu nguồn một cách chính xác, đồng thời quản lý các thao tác mà lệnh COPY thực hiện trong quá trình tải

ánh xạ cột

Theo mặc định, COPY chèn các giá trị trường vào các cột của bảng đích theo cùng thứ tự như các trường xuất hiện trong tệp dữ liệu. Nếu thứ tự cột mặc định không hoạt động, bạn có thể chỉ định danh sách cột hoặc sử dụng biểu thức JSONPath để ánh xạ trường dữ liệu nguồn tới cột đích

Thông số định dạng dữ liệu

Bạn có thể tải dữ liệu từ các tệp văn bản ở định dạng chiều rộng cố định, được phân tách bằng ký tự, được phân tách bằng dấu phẩy (CSV) hoặc định dạng JSON hoặc từ các tệp Avro

Theo mặc định, lệnh COPY yêu cầu dữ liệu nguồn ở dạng tệp văn bản UTF-8 được phân tách bằng ký tự. Dấu phân cách mặc định là một ký tự ống (. ). Nếu dữ liệu nguồn ở định dạng khác, hãy sử dụng các tham số sau để chỉ định định dạng dữ liệu

Thông số chuyển đổi dữ liệu

Khi nó tải bảng, COPY cố gắng chuyển đổi hoàn toàn các chuỗi trong dữ liệu nguồn sang kiểu dữ liệu của cột đích. Nếu bạn cần chỉ định một chuyển đổi khác với hành vi mặc định hoặc nếu chuyển đổi mặc định dẫn đến lỗi, bạn có thể quản lý chuyển đổi dữ liệu bằng cách chỉ định các tham số sau

Hoạt động tải dữ liệu

Quản lý hành vi mặc định của hoạt động tải để khắc phục sự cố hoặc để giảm thời gian tải bằng cách chỉ định các tham số sau