Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据类型从dataframe保存到SQL Server表_Python_Sql Server_Sql Insert - Fatal编程技术网

Python 将数据类型从dataframe保存到SQL Server表

Python 将数据类型从dataframe保存到SQL Server表,python,sql-server,sql-insert,Python,Sql Server,Sql Insert,我有一个数据帧(最初来自csv) df=pd.read\u excel(r'r:\\uu测试服务器\dailystatus\DailyWork10.18.xlsx') 我创建了一个dataframe来处理行中的一些空值。我还在SQL Server中创建了表,并定义了列类型(datetime、int和varchar) 我正在构建一个插入字符串,以将数据插入SQL Server中的一个新表中 insert\u query='insert到[DailyStatus].[dbo].[StatusRep

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

df=pd.read\u excel(r'r:\\uu测试服务器\dailystatus\DailyWork10.18.xlsx')
我创建了一个dataframe来处理行中的一些空值。我还在SQL Server中创建了表,并定义了列类型(
datetime
int
varchar

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

insert\u query='insert到[DailyStatus].[dbo].[StatusReports]值中(
对于范围内的i(df.shape[0]):
对于范围内的j(df.形状[1]):
插入_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)并在以后提取时定义数据类型?

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

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

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

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

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