我正在尝试为 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
)
那么如何正确转换所有数据类型?
建表前列类型为datetime时,使用to_datetime转换数据类型。
df['END_DATE'] = pd.to_datetime(df['END_DATE'], format='your date format', errors='coerce')