Массовый импорт данных из CSV-файлов с множеством разных столбцов, но похожими данными, в PostgreSQL.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Массовый импорт данных из CSV-файлов с множеством разных столбцов, но похожими данными, в PostgreSQL.

Сообщение Anonymous »

Я хочу написать сценарий для массового импорта сотен файлов CSV в PostgreSQL с разными столбцами/форматированием.
Как выполнить массовый импорт данных с разными столбцами/форматами в другую таблицу postgresql с использованием файла csv?
Например, в приведенном ниже коде показано, как выполнить массовый импорт данных в SQL, но вы не знаете, как импортировать данные с разными столбцами.
Итак, как бы нам изменить код? ниже, чтобы выполнить эту задачу? Я новичок в postgresql, поэтому прошу прощения за глупость.

Код: Выделить всё

import pandas as pd
import psycopg2
from io import StringIO

# Database connection parameters
db_params = {
"dbname": "your_database",
"user": "your_username",
"password": "your_password",
"host": "your_host",
"port": "your_port",
}

# File path to your CSV
csv_file = "your_file.csv"
table_name = "your_table_name"

# Connect to PostgreSQL
conn = psycopg2.connect(**db_params)
cur = conn.cursor()

# Step 1: Read CSV into Pandas DataFrame
df = pd.read_csv(csv_file)

# Step 2: Create table dynamically
columns = df.columns
col_str = ", ".join([f'"{col}" TEXT' for col in columns])  # Assuming TEXT for simplicity
create_table_query = f"CREATE TABLE IF NOT EXISTS {table_name} ({col_str});"
cur.execute(create_table_query)
conn.commit()

# Step 3: Use COPY to load the data
buffer = StringIO()
df.to_csv(buffer, index=False, header=False)  # Write DataFrame to buffer without header
buffer.seek(0)

# COPY data into the table
copy_query = f"COPY {table_name} ({', '.join(columns)}) FROM STDIN WITH CSV"
cur.copy_expert(copy_query, buffer)
conn.commit()

# Close connections
cur.close()
conn.close()

print(f"Data from {csv_file} has been successfully imported into {table_name}.")

Я пытался агрегировать имена всех столбцов и смог создать файл со всеми именами столбцов, но не знал, как выровнять данные по столбцам.

Подробнее здесь: https://stackoverflow.com/questions/792 ... milar-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»