我在TEXT
列中转换数据类型时遇到问题。
我必须从自定义CSV文件上传所有数据。无法保证我什至会得到我期望的所有列,更不用说正确的数据类型了,所以我从一个表开始,其中所有列都是 TEXT 类型,并将空字符串放在空白处。
前任。表看起来像这样
创建表 tbl1(col1 文本,col2 文本,col3 文本);
从文件加载后tbl1
,我运行它。
选择 * 从 tbl1;
选择结果:
'1','String1','2.0'
'2','String2','3.14'
'3','String3', '6.77776'
'h','Stringh','hh'
'','细绳', ''
现在我想从中获取数据tbl1
并使用它来填充此表。
创建表 tbl2(col1 整数,col2 文本,col3 实数);
我尝试这样。
INSERT INTO tbl2 SELECT CAST(tbl1.col1 as INTEGER), tbl1.col2, CAST(tbl1.col3 AS REAL) FROM tbl1;
之后我运行这个,
选择 * 从 tbl2;
选择结果:
1,'String1', 2.0
2,'String2', 3.14
3,'String3', 6.77776
0,'字符串', 0
0,'字符串', 0
我真正想要的是抓住我认为“好”的演员表并将它们插入tbl2
然后取出我认为“坏”演员表的所有值并将它们放入看起来像这样的“tbl3”中。
创建表 tbl3(col1 文本,col2 文本,col3 文本,REASON_FOR_REJECTION 文本);
tbl3
将用于报告和可能解决不良数据的问题。
在将这些数据插入之前,我是否需要在 C++ 中对其进行预处理,tbl2
或者 SQLite 是否支持某种允许我捕捉“坏”强制转换的查询功能?
更新:
通过将 CL. 的查询添加到此末尾,我可以区分哪些记录具有“不良”强制转换,并清理tbl2
并将不良数据行添加到tbl3
.