保留从数据帧到SQL Server表的数据类型

我有一个数据框(最初来自csv)

df = pd.read_excel (r'R:\__Test Server\DailyStatuses\DailyWork10.18.xlsx')

我创建了一个数据框来处理行中的一些空值。我还在SQL Server中创建了表,并定义了列类型(datetimeintvarchar)。

我正在构建一个插入字符串,以将数据插入SQL Server中的新表中。

insert_query='INSERT INTO [DailyStatuses].[dbo].[StatusReports] VALUES (
for i in range (df.shape[0]):
    for j in range(df.shape[1]):
        insert_query += (df[df.columns.values[j]][i]) +','
    insert_query= insert_query[:-1] + '),('
insert_query = insert_query[:-3] + ');'

我的输出是:

INSERT INTO [DailyStatuses].[dbo].[StatusReports] VALUES (3916,2019-10-17 16:45:54...

我经常遇到有关数据类型的错误,最好将所有内容都定义为str,以便更容易插入SQL Server(并将表中的每一列定义为str)并在以后提取数据时定义数据类型在路上吗?

harry1900 回答:保留从数据帧到SQL Server表的数据类型

使用参数会更好,但是根据您提出的问题,您将不得不分别处理每种数据类型。

对于int值,可以按原样使用它们。

对于字符串值,您必须将单引号引起来,即“一个值”,并且还需要用两个单引号替换所有嵌入的单引号。

对于日期时间值,您应该使用不受区域设置影响的格式,并在其周围加上引号,即“ 20191231 12:54:54”

另一种选择(如您建议的那样)是将它们全部作为字符串包含在内,并在SQL Server中进行清理和更改数据类型。这通常是一个更可靠的方向。再次提醒您,不要忘记将值中的所有嵌入式单引号加倍。

本文链接:https://www.f2er.com/3169986.html

大家都在问