tsql:使用csv文件更新db表的最佳方法

phi*_*ill 5 t-sql sql-server csv

我在sql server 2005中有一个产品表,需要通过csv文件中的某些字段进行更新.这两个文件都有一个供应商部件号,可以链接到我可以在csv文件中使用另一个更新products.discontined字段的位置.

我的问题是,最好的方法是什么?

我考虑过创建一个与excel文件的odbc连接,并想出如何合并更新2列.将整个csv文件(~60 MB)导入sql server中的临时表,然后写一个tsql程序来搜索,比较,更新?还从查询分析器执行和opensource命令并编写一个过程来读取csv文件并以这种方式更新表.

提前致谢

Rus*_*rry 3

如果您可以使用,那么 SQL Server 2005 的最佳选择是 SQL Server Integration Services(以前称为数据转换服务或 DTS)。这将让您创建一个可以驻留在任何地方并按计划运行或在您决定时调用的包。它也可以与调用它的应用程序异步运行。

\n\n

更新:
\n此外,您可以在决定发布之前运行并调试该包以使其完美。这将使您能够解释诸如格式错误的文档等问题。

\n\n

如果您没有可用的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/ )

\n\n

创建一个与 csv 轮廓匹配的表,然后使用以下命令导入它:

\n\n
BULK\nINSERT MyTable\nFROM \xe2\x80\x98c:\\mycsv.csv\xe2\x80\x99\nWITH\n(\n    FIELDTERMINATOR = \xe2\x80\x98,\xe2\x80\x99,\n    ROWTERMINATOR = \xe2\x80\x98\\n\xe2\x80\x99\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

从那里您可以使用 tsql 对其进行转换,因为它位于数据库的表中。

\n\n

如果它是持续更新,您可以创建临时表来完成您的工作并将存储过程作为作业运行。

\n