我有一个非常大的CSV文件,我导入到sqlite表中。有超过50列,我想找到任何列为空的所有行。这甚至可能吗?我只是想节省自己在where子句中写出所有50个不同列的时间。感谢。
答案 0 :(得分: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();
}
答案 1 :(得分:0)
没有。不是没有使用DESCRIBE TABLE
或中间技术的游标。
您最好的选择是DEFAULT NULL
列并重新导入数据。但是,根据CSV导入和列类型,您可能仍会在列中获得空值。
很糟糕,但是复制和粘贴SQL命令可能更快。该脚本可以重复使用。