我尝试使用以下查询将列从varchar转换为bigint:
X_train = array([['20170110', 'US', '1', 'google', '1', '500'],
['20170110', 'EU', '1', 'google', '2', '400'],
['20170111', 'US', '2', 'facebook', '2', '400']],
dtype='<U21')
y_train = array(['5000', '2000', '2000'], dtype='<U21')
X_test = array([['20170112', 'EU', '2', 'google', '1', '500'],
['20170113', 'US', '1', 'facebook', '2', '400'],
['2017014', 'US', '2', 'google', '1', '500']],
dtype='<U21')
estimator = RandomForestRegressor().fit(X_train, y_train)
y_pred = estimator.predict(X_test)
但是我收到以下错误:
ALTER TABLE 'table_name' ALTER COLUMN 'colname' SET DATA TYPE BIGINT;
该列具有类似于37439510的int值,但是采用varchar格式。
答案 0 :(得分:1)
无法回答,这不适用于Vertica deifnition:
两种方法。
创建新表,加载新表,删除旧表,重命名新表。
在表格中创建新列。从旧加载列。更改表以删除旧列
答案 1 :(得分:1)
如果你想保留你的桌子,试试:
ALTER TABLE table_name ADD COLUMN colname_as_int INT DEFAULT colname::INT;
然后:
ALTER TABLE table_name ALTER COLUMN colname_as_int DROP DEFAULT;
然后:
ALTER TABLE table_name DROP COLUMN colname;
最后:
ALTER TABLE table_name RENAME COLUMN colname_as_int TO colname;
但是,如果table_name
上没有colname
作为ORDER BY列或SEGMENTED BY HASH()列的投影,则仅适用;你必须用另一个超级投影替换那些投影,然后放弃那些预测....