我有一堆相当大的CSV(逗号分隔值)文件,我想分析它们。 SQL查询非常适合这种情况。到目前为止,我一直在使用MS Access导入CSV文件并对它们执行查询。但是,除了有一个非常糟糕的SQL编辑器和关于何时可以打开/编辑/删除查询/表的愚蠢的任意规则,它是非常慢的。在执行查询时,我可以忍受最初的缓慢,但我真的很讨厌每当我尝试在另一列上对表进行排序,等待5分钟或尝试滚动时,它似乎重新执行它。
这项工作有更好的(免费)工具吗? (如果需要,我愿意手动编写脚本以将CSV转换为其他内容)
谢谢!
编辑: 感谢所有的答案!我将尝试SQL Server,如果它成功,我会接受这个答案。只是澄清一下:导入数据文件对我来说不一定是个问题(虽然这样做的简单方法当然是受欢迎的)。我需要的是一些程序,随后允许我快速有效地执行(相当复杂的)查询。 FileHelpers不会帮助我,因为首先我不知道任何.NET语言,其次,我有Java中的数据,但我认为使用SQL分析它会容易得多。谢谢你的答案!
答案 0 :(得分:5)
为什么不直接将它们导入MySQL,这很容易。
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE some_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, filed2, field3);
然后你可以轻松地运行任何复杂的查询...
答案 1 :(得分:4)
您没有说明您使用的DBMS,但PostgreSQL有COPY命令可以执行此操作,但有很多选项:
COPY billing.contact FROM '/foo/bar/contact.csv' WITH DELIMITER AS ',';
答案 2 :(得分:3)
带有工具Here的SQL Server Express 2008。它包括Management Studio,效果很好。
请注意,它确实需要.net framework 3.5 sp1,MS Installer 4.5和Powershell 1.0,但如果您需要获取这些链接,下载页面上也会有链接。
答案 3 :(得分:1)
开箱即用,你可以看一下LINQ to CSV。
答案 4 :(得分:1)
还有一个Oracle Express Edition。
我想这取决于你已经精通的地方。或者也许你希望精通。
答案 5 :(得分:0)
如果可以将它们作为Access获取,那么只需将Access表导出到SQL Server即可。或者,如果csv有一个通用模式,则创建表是SQL Server,从Access远程连接,并直接导入SQL Server。
答案 6 :(得分:0)
logparser可以做到这一点......你可以在csv和其他分隔文件上创建sql查询
答案 7 :(得分:0)
Oracle SQL Developer(和Oracle Express Edition - 感谢Mark)都是免费的,轻量级的,SQl Developer可以将csv文件加载到完整的关系db:Oracle XE> 然后,您可以运行SQL语句,甚至可以通过拖放界面创建它们。 你也可以看看Squirrel
答案 8 :(得分:-1)
如果您想对数据执行某些处理,我可以在http://www.filehelpers.com/推荐FileHelpers库。它包括导入,处理和导出分隔或固定长度数据文件所需的全部内容。
您可以使用SQL Server Express作为免费数据库来代替Access。在这里阅读:
http://www.microsoft.com/express/sql/default.aspx
您可以使用SQL Server的Management Studio Express查询数据,也可以通过Visual Studio Express版本访问许多相同的工具,所有这些工具都是免费的 - 您甚至可以通过添加新项目创建新的MDF菜单选项。
我希望这会有所帮助。