Загрузить csv в красное смещение без прохождения S3

Я использую инструментальные средства SQL / J для взаимодействия с кластером красного смещения, и я хотел бы загрузить файл CSV (около 500 тыс. Строк) в таблицу красного смещения (у меня есть привилегия вставки) без использования команды COPY (поскольку у меня нет прав на скопировать в s3).

Вы знаете, возможно ли это (используя, возможно, вставку), если да, не могли бы вы мне помочь?

Обратите внимание, что у меня есть единственная привилегия: выбирать, вставлять, обновлять и удалять таблицы в кластере.

Спасибо.


person Amine    schedule 19.05.2017    source источник
comment
Насколько мне известно, вы можете сделать это с помощью скрипта Python.   -  person Rahul Gupta    schedule 19.05.2017
comment
Я знаю, что вы просите сделать это без S3, но команда copy идеально подходит для этого варианта использования. Я обещаю, что вы не захотите делать inserts с SQL Workbench / J; это займет недопустимое количество времени на 500 тыс. строк. Не могли бы вы попросить своих разработчиков предоставить вам доступ к корзине S3?   -  person Niels Joaquin    schedule 19.05.2017


Ответы (2)


Команда COPY - лучший способ загрузить данные в Redshift. Единственный другой способ - INSERT данные строка за строкой, что можно сделать с помощью сценария python, использующего pyscopg2 для выполнения INSERT SQL-запросов после установления соединения с Redshift.

Итак, просто перебирайте свой CSV-файл построчно и выполняйте INSERT запрос по всем строкам:

import psycopg2
conn = psycopg2.connect("dbname = 'your_db_name' user= 'your_user' host='redshift_cluster_endpoint_without_port_number' port='port_number' password='password'")
cur = conn.cursor()
for row in rows:
    cur.execute("INSERT INTO TABLE_NAME VALUES(%s,%s,%s,%s)" %(row[0],row[1],row[2],row[3])) 

Где row[0],row[1],row[2],row[3] - ваши данные для всех столбцов в строке.

Имейте в виду, что INSERT строка за строкой будет намного медленнее и менее эффективна, чем команда COPY.

person Yankee    schedule 24.05.2017

Вы можете скопировать команду для загрузки данных с удаленного хоста. см. http://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-remote-hosts.html.

person akuroda    schedule 05.11.2017