我在sql server 2005中有一个产品表,需要通过csv文件中的某些字段进行更新。这两个文件都有一个供应商部件号,可以链接到我可以在csv文件中使用另一个更新products.discontined字段的位置。
我的问题是解决这个问题的最佳方法是什么?
我考虑过创建一个与excel文件的odbc连接,并想出如何合并更新2列。将整个csv文件(~60 MB)导入sql server中的临时表,然后写一个tsql程序来搜索,比较,更新?还从查询分析器执行和opensource命令,并编写一个过程来读取csv文件并以这种方式更新表..
提前致谢
答案 0 :(得分:3)
如果您可以使用,SQL Server 2005最好的选择是SQL Server Integration Services(以前称为Data Transformation Services或DTS)。这将允许您创建一个可以驻留在任何位置并按计划运行或在您决定时调用的包。它也可以异步运行到调用它的应用程序。
更新:
此外,您可以在决定发布之前运行并调试程序包以使其完美。这将允许您考虑诸如格式错误的文档等内容。
如果您没有可用的SSIS,那么您可以进行批量插入(参考:http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server/)
创建一个与csv大纲相匹配的表,然后使用以下命令导入它:
BULK
INSERT MyTable
FROM ‘c:\mycsv.csv’
WITH
(
FIELDTERMINATOR = ‘,’,
ROWTERMINATOR = ‘\n’
)
从那里你可以使用tsql对它进行转换,因为它位于数据库中的表中。
如果是持续更新,您可以创建临时表来完成工作并将存储过程作为作业运行。