2010-07-14 84 views
0

我有一个非常大的CSV文件,我导入到一个sqlite表。有超过50列,我想找到任何列的空列的所有行。这甚至有可能吗?我只是试图为自己节省写出where子句中所有50个不同列的时间。谢谢。sqlite:如何查找表中任何列为空的所有行?

+1

像你一样的气味有重复的团体......见http://en.wikipedia.org/wiki/1NF – 2010-07-14 03:49:08

回答

0

这是一个有趣的问题,但编写一个快速脚本可能会更快,该脚本会生成将CSV标题行复制/粘贴到相应脚本的转换器。

例如这个作品在LINQPad(C#)

void Main() 
{ 
string input = "adasda|sadasd|adasd|"; 
char delim = '|'; 
StringBuilder sql = new StringBuilder(); 
sql.AppendLine("SELECT * FROM table WHERE "); 
foreach (string s in input.Split(delim)) 
{ 
    if (!String.IsNullOrEmpty(s)) 
    sql.Append(s).AppendLine(" IS NULL OR "); 
} 
sql.ToString().Trim('\r', '\n', 'O', 'R',' ').Dump(); 
} 
0

No.无而不使用DESCRIBE TABLE或光标的中间技术。

你最好的办法是到DEFAULT NULL列并重新导入数据。但取决于CSV导入和列类型,您仍然可以在列中获得空值。

很糟糕,但是复制和粘贴SQL命令可能会更快。该脚本将是可重用的。

相关问题