Как выполнить массовый импорт данных с разными столбцами/форматами в другую таблицу 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