我正在使用Superset作为SQLite数据库的数据可视化工具。因为SQLite没有DATETIME类型,所以我使用TEXT类型添加日期和一个小时。
但是,Superset仍无法识别此“ TEXT”或String是日期!
这是我的数据:
CREATE TABLE TEST(
TEST_ID int PRIMARY KEY NOT NULL,
VEHICLE_ID int NULL,
TEST_TYPE_ID int NULL,
CHECK_TYPE_ID int NULL,
NUM_TEST int NULL,
TEST_DATE TEXT NOT NULL
);
INSERT INTO TEST (TEST_ID, VEHICLE_ID, TEST_TYPE_ID, CHECK_TYPE_ID, NUM_TEST, TEST_DATE) VALUES (844, 504, 3, 1, 3, '2007-01-01 10:00:00');
Run Code Online (Sandbox Code Playgroud)
然后在Superset中,我收到以下消息:
“ Datetime列未作为零件表配置提供,并且此类型的图表是必需的”
详细说明:
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/superset/viz.py", line 234, in get_payload
df = self.get_df()
File "/usr/lib/python2.7/site-packages/superset/viz.py", line 78, in get_df
self.results = self.datasource.query(query_obj)
File "/usr/lib/python2.7/site-packages/superset/connectors/sqla/models.py", line 538, in query …Run Code Online (Sandbox Code Playgroud) 我想用 .sql 文件中的十进制等效值替换所有十六进制。
我有数十万行这样的行:
INSERT INTO TEST (TEST_ID, VEHICLE_ID, TEST_TYPE_ID, TYPE_ID, NUM_TEST, TEST_DATE, HOUR_START, HOUR_END, ....) VALUES (844, 504, 3, 1, 3, CAST(0x0000991400000000 AS DateTime), CAST(0x00009914008FC76C AS DateTime), CAST(0x0000991400906924 AS DateTime), ......);
Run Code Online (Sandbox Code Playgroud)
我想使用这个 sql 文件来创建 SQLite 数据库。但 SQLite 无法识别十六进制。所以目标是替换文件的所有十六进制。
我找到了这个解决方案来替换特定的十六进制:
decimal = int("0x0000991400000000", 0)
Run Code Online (Sandbox Code Playgroud)
我发现这个解决方案可以用另一个单词替换所有出现的单词:
for line in fileinput.input():
line = re.sub('wordToReplace','newWord', line.rstrip())
Run Code Online (Sandbox Code Playgroud)
我尝试在第二个中使用第一个,但“newWord”需要一个字符串,而我给出一个 int。有什么办法可以做我想做的事?
感谢您的时间 !