Tôi đang tải một tệp khá lớn vào cơ sở dữ liệu postgresql. Để làm điều này trước tiên tôi sử dụng split
trong tệp để nhận các tệp nhỏ hơn (mỗi tệp 30Gb) và sau đó tôi tải từng tệp nhỏ hơn vào cơ sở dữ liệu bằng cách sử dụng GNU Parallel
và psql copy
.
Vấn đề là phải mất khoảng 7 giờ để phân chia tệp, và sau đó nó bắt đầu tải một tệp cho mỗi lõi. Những gì tôi cần là một cách để nói split
để in tên tệp thành đầu ra std mỗi khi nó hoàn thành việc viết một tệp để tôi có thể dẫn nó đến Parallel
và nó bắt đầu tải các tệp tại thời split
điểm viết xong. Một cái gì đó như thế này:
split -l 50000000 2011.psv carga/2011_ | parallel ./carga_postgres.sh {}
Tôi đã đọc các split
trang người đàn ông và tôi không thể tìm thấy bất cứ điều gì. Có cách nào để làm điều này với split
hoặc bất kỳ công cụ nào khác không?