当您将列声明为INTEGER
或时REAL
,sqlite将自动尝试转换值。任何无法转换的值将保留原始类型。
因此,只需将数据直接导入tbl2
,然后使用类似的查询查找所有有错误的记录:
INSERT INTO tbl3
SELECT col1, col2, col3,
trim(CASE typeof(col1)
WHEN 'integer' THEN ''
ELSE 'col1:' || typeof(col1)
END ||
' ' ||
CASE typeof(col3)
WHEN 'real' THEN ''
ELSE 'col3:' || typeof(col3)
END)
FROM tbl2
WHERE typeof(col1) != 'integer'
OR typeof(col3) != 'real'