我想用指定的时间戳列将csv文件导入QuestDb表。我必须指定其中一个列不是字符串,而是一个时间戳,我称之为
import requests
schema = '[{"name":"date", "type": "Timestamp", "pattern":"yyyy-MM-dd"}]'
with open('..\HavCases.csv', 'rb') as f:
r = requests.post(r'http://localhost:9000/imp?name=table3&overwrite=true×tamp=date',
files={'schema': schema,'data': f})
print(r.text)
但date列一直以字符串形式返回,响应是
not a timestamp 'date'
当我从URL中删除×tamp
时,我看到列被解析为字符串,而不是时间戳
+-----------------------------------------------------------------------------------------------------------------+
| Location: | table3 | Pattern | Locale | Errors |
| Partition by | NONE | | | |
| Timestamp | NONE | | | |
+-----------------------------------------------------------------------------------------------------------------+
| Rows handled | 780 | | | |
| Rows imported | 780 | | | |
+-----------------------------------------------------------------------------------------------------------------+
...
| 9 | date | STRING | 0 |
我发现了一个aswer,这不是一个小问题,我必须查看QuestDb源代码,所以将它发布在这里供其他人使用
显然,当QuestDb解析导入请求时,它希望“schema”文件位于csv“data”之前。当Python请求从文件字典发布数据时,它似乎按照键的字母顺序发布数据,因此
files={'schema': schema,'data': f}
和files={'data': f, 'schema': schema}
是等效的,首先发送数据,然后发送模式为了解决这个问题,我必须以元组列表而不是字典的形式提供files参数:
相关问题 更多 >
编程相关推荐