Это мой код Python:
Код: Выделить всё
postgres_connection_string = 'user=postgres password=example host=192.168.x.y dbname=postgres port=5432'
import pandas
df = pandas.read_csv('test_file.csv', header=None)
import psycopg
import io
file = io.StringIO()
df.to_csv(file, index=False, header=False)
file.seek(0)
columns = '(string_column, int_column)'
with psycopg.connect(postgres_connection_string) as conn:
with conn.cursor() as cur:
cur.copy(f'COPY example_schema.test_table {columns} FROM STDIN WITH (FORMAT csv)', file)
conn.commit()
Код: Выделить всё
$ cat test_file.csv
hello world,1
goodbye world,2
Код: Выделить всё
CREATE TABLE example_schema.test_table (
test_table_id serial4 NOT NULL,
string_column varchar NOT NULL,
int_column int4 NOT NULL,
CONSTRAINT test_table_pkey PRIMARY KEY (test_table_id)
);
Для «реальной» программы количество загружаемых данных велико. (Несколько гигабайт.) Однако последний блок, содержащий cur.copy, завершается гораздо меньше, чем за 1 секунду, что позволяет предположить, что он ничего не делает.
Почему это может быть?
Подробнее здесь: https://stackoverflow.com/questions/798 ... does-not-a
Мобильная версия