如何将DataFrame的数据类型转换为SQL数据类型?

问题描述 投票:0回答:1

我正在尝试为 CSV 文件创建一个空 SQL 表。我还将数据帧数据类型转换为 SQL 数据类型。但是,日期数据类型已转换为浮点数据类型。

import pandas as pd

def generate_table_creation_query(csv_file_path, table_name):
    df = pd.read_csv(csv_file_path)

    sql_data_types = {
        'int64': 'INT',
        'float64': 'FLOAT',
        'object': 'NVARCHAR(MAX)',  
        'datetime64': 'DATETIME'
    }

    column_definitions = []
    for column_name, dtype in df.dtypes.items():
        column_type = sql_data_types.get(str(dtype), 'NVARCHAR(MAX)')
        column_definitions.append(f'{column_name} {column_type}')

    columns_str = ',\n'.join(column_definitions)

    table_creation_query = f'''
    CREATE TABLE {table_name} (
    {columns_str}
    )
    '''
    return table_creation_query

# Example usage:
csv_file_path = 'transactions.csv'  
table_name = 'transactions'
sql_query = generate_table_creation_query(csv_file_path, table_name)
print(sql_query)

代码以浮点数据类型返回ENDDATE。这是结果输出:

CREATE TABLE transactions (
    CUST_ID NVARCHAR(MAX),
    START_DATE NVARCHAR(MAX),
    **END_DATE FLOAT,**
    TRANS_ID NVARCHAR(MAX),
    DATE NVARCHAR(MAX),
    YEAR INT,
    MONTH INT,
    DAY INT,
    EXP_TYPE NVARCHAR(MAX),
    AMOUNT FLOAT
    )

那么如何正确转换所有数据类型?

python sql-server pandas dataframe sqldatatypes
1个回答
0
投票

建表前列类型为datetime时,使用to_datetime转换数据类型。

df['END_DATE'] = pd.to_datetime(df['END_DATE'], format='your date format', errors='coerce')
© www.soinside.com 2019 - 2024. All rights reserved.