我偶尔会得到一次性修改某些数据的请求,并且请求中带有一些CSV值。 有没有办法可以将任意CSV作为表格或行源快速轻松地处理,即使是内嵌数据?
EG,我可以做些什么:
SELECT * FROM SomeSpecialCommand(' 147074,13 153987,16 147075,3 176405,16 176437,25 176436,14 176406,14 176439,13 176407,13 ') as MyInlineCSV
是什么促使这是一个要求修改约100项目的库存水平,我被给了一个CSV编号和数量(如上)。
你会想要使用一个称为用户定义的表值函数的东西 。 基本上,您将创build一个函数,它接受一个nvarchar(max)参数并创build一个从CSVinput返回的表。 实际上你可以在这里使用数十种方法(使用数字表,使用XMLtypes,使用循环等等),但是这已经被一些聪明的Sql人彻底logging和testing ,所以我只是指出你在那里。 一定要仔细阅读评论部分 ,因为对于不同的数据大小,环境等有替代解决scheme和testing结果 – 只要select一个最适合你的解决scheme和testing结果。
不幸的是,你不能这样做。 你可以创build一个指向excel文件的链接服务器。 你可以使用这个作为你的“工具”链接服务器,并保存随机文件作为正确的.xls文件,你可以从表中select。
是否必须使用sql-server?
Perl的DBD :: CSV可以解决简单的修改,不需要从数据库中的其他表中提取数据。