python - 将数据类型从数据帧保存到 SQL Server 表
问题描述
我有一个数据框(最初来自 csv)
df = pd.read_excel (r'R:\__Test Server\DailyStatuses\DailyWork10.18.xlsx')
我创建了一个数据框来处理行中的一些空值。我还在 SQL Server 中创建了表,并定义了列类型(datetime
和int
)varchar
。
我正在构建一个插入字符串以将数据插入到 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)并在稍后提取时定义数据类型?
解决方案
您最好使用参数,但根据您提出的问题,您将不得不分别处理每种数据类型。
对于 int 值,您可以按原样使用它们。
对于字符串值,您必须在它们周围加上单引号,即“一个值”,并且您还需要用两个单引号替换任何嵌入的单引号。
对于日期时间值,您应该使用不受区域设置影响的格式并在它们周围加上引号,即 '20191231 12:54:54'
另一种选择(如您所建议的)是将它们全部作为字符串引入,并在 SQL Server 中进行清理和数据类型更改。这通常是一个更可靠的方向。不过,不要忘记将值中的任何嵌入式单引号加倍。
推荐阅读
- angular - PrimeNG,p-tabView 在标签行上放置额外的内容
- linux - Git:隐藏的更改但仍然无法拉取
- excel - 获取文本形式的时间平均值
- selenium - 如何在硒的桌子上进行鼠标悬停和滚动
- stm32 - STM32 同步 ADC 仅从 ADC 1 读取值
- nginx - 如何在 Nginx 中将 https://www 重定向到非 www https 版本
- linux - 如何在 FunctionFS 中扩展 BOS 描述符?
- python - elif a=="no": ^ SyntaxError: 无效语法
- ifttt - 与 IFTTT 的用户交互
- r - 停止 ggplot2 中的标签重叠