MagicStack / MagicStack/asyncpg
Cockroachdb copy_records_to_table support?
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 8.1k
- Fork
- 468
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
- asyncpg version: v0.21.0
- PostgreSQL version: CCL v20.1.8 @ 2020/10/21 15:46:38 (go1.13.9)
- Python version: 3.8
- Platform: macos
- Do you use pgbouncer?: no
- Did you install asyncpg with pip?: yes
EDIT:
Confirmed cockroachdb does not support the COPY ... FROM STDIN syntax. (https://github.com/cockroachdb/cockroach/issues/16392)
Reasoning is:
"because it's 1) complicated and 2) slow. All the data goes through a single connection. CockroachDB provides an IMPORT PGDUMP statement which is much faster and can operate in parallel."
Hopefully one of the maintainers can comment on this.
Hello, I'm not sure if this has been asked before, but I'm having issues running copy_records_to_table into a cockroachdb table/temp table. Here's a code snippet which will reproduce the issue when running a local cockroachdb.
Exception:
PostgresSyntaxError at or near "(": syntax error
DETAIL: source SQL:
COPY "cool_table" FROM STDIN (FORMAT binary)
^
import asyncio
import asyncpg
async def bwrite():
dsn = "postgres://root@localhost:26257/postgres"
conn: asyncpg.Connection = await asyncpg.connect(dsn)
await conn.execute("SET experimental_enable_temp_tables = on")
await conn.execute(
"""CREATE TEMP TABLE cool_table(
objectid int8,
CONSTRAINT "primary" PRIMARY KEY (objectid ASC)
);"""
)
try:
this_res = await conn.fetch("SHOW TABLES from pg_temp")
print(this_res)
await conn.copy_records_to_table(
"cool_table", records=[(12345,), (67890,)]
)
except Exception as e:
print(e)
if __name__ == "__main__":
# build: CCL v20.1.8 @ 2020/10/21 15:46:38 (go1.13.9)
loop = asyncio.get_event_loop()
res = loop.run_until_complete(bwrite())
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với asyncpg.Connection.copy_records_to_table và câu lệnh COPY "cool_table" FROM STDIN (FORMAT binary) được tạo ra và hiển thị trong issue. Sử dụng bản tái hiện được cung cấp với CockroachDB và một bảng tạm làm trường hợp chấp nhận; được xem là hoàn tất khi tính năng hỗ trợ được yêu cầu hoạt động hoặc khi tính không tương thích và phương án thay thế được hỗ trợ đã được xác lập rõ ràng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- postgresql, python
- Lĩnh vực
- database
- Loại issue
- Tính năng
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100