Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server tsql:用csv文件更新db表的最佳方法_Sql Server_Tsql_Csv - Fatal编程技术网

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

Sql server tsql:用csv文件更新db表的最佳方法,sql-server,tsql,csv,Sql Server,Tsql,Csv,我在SQLServer2005中有一个products表,需要通过csv文件中的某些字段进行更新。这两个文件都有一个供应商零件号,可以链接到我可以用csv文件中的另一个字段更新products.Uncontined字段的位置 我的问题是什么是最好的方法 我考虑过创建一个到excel文件的odbc连接,并研究如何合并更新这两列。将整个csv文件(~60 MB)导入sql server中的临时表,然后编写tsql过程来搜索、比较和更新?还可以从查询分析器中执行和打开源代码命令,并编写一个过程来读取c

我在SQLServer2005中有一个products表,需要通过csv文件中的某些字段进行更新。这两个文件都有一个供应商零件号,可以链接到我可以用csv文件中的另一个字段更新products.Uncontined字段的位置

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

我考虑过创建一个到excel文件的odbc连接,并研究如何合并更新这两列。将整个csv文件(~60 MB)导入sql server中的临时表,然后编写tsql过程来搜索、比较和更新?还可以从查询分析器中执行和打开源代码命令,并编写一个过程来读取csv文件并以这种方式更新表


提前感谢

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

更新:
此外,您还可以在决定发布包之前运行和调试包,以使其完美。这将允许您对诸如格式错误的文档等内容进行说明

如果您没有可用的SSI,则可以进行批量插入(参考:)

创建一个与csv大纲匹配的表,然后使用以下命令导入该表:

BULK
INSERT MyTable
FROM ‘c:\mycsv.csv’
WITH
(
    FIELDTERMINATOR = ‘,’,
    ROWTERMINATOR = ‘\n’
)
从那里,您可以使用tsql将其转换为数据库中的表


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

这是持续更新还是一次性操作?这将有助于确定最佳路径。CSV是否干净?IE引号已转义等?请注意:“sqlserver”标记最近被弃用,取而代之的是“sql server”。这将是一个持续更新。csv相对干净,但我在文件中没有看到任何引号。我目前无法使用该引号。您可能还想查看此处:因为您提到该文件以excelJet提供程序开头是出了名的马车,避免它。