首页 > 解决方案 > 将数据类型从数据帧保存到 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)并在稍后提取时定义数据类型?

标签: pythonsql-serversql-insert

解决方案


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

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

对于字符串值,您必须在它们周围加上单引号,即“一个值”,并且您还需要用两个单引号替换任何嵌入的单引号。

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

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


推荐阅读