【问题标题】:Conserving data types from dataframe to SQL Server table将数据类型从数据帧保存到 SQL Server 表
【发布时间】:2019-11-03 21:56:44
【问题描述】:

我有一个数据框(最初来自 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)并在稍后提取时定义数据类型在路上?

【问题讨论】:

    标签: python sql-server sql-insert


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-08-28
      • 1970-01-01
      • 2020-04-04
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2022-07-06
      相关资源
      最近更新 更多