我正在尝试创建一个进程,该进程将定期将多个 csv 文件批量上传到 SQL Server 中的各个表中。我遇到的问题是这些文件不在同一台服务器上。
我可以使用批量上传命令从 SQL 服务器框上的文件夹上传文件,但不能从位于不同服务器上的共享驱动器上传文件。有多个人将运行此过程,因此它可能不可行,因为并非所有人都能获得对 SQL 服务器框的这种访问权限。
有没有办法以同样的效率和速度完成这个任务?
我曾想过发送 csv 文件中的每一行,但这些文件很大,需要很长时间
才能完成这项工作。
SSIS 会更少或更多或同样有效吗?
如果不涉及任何转换,您可以在 SSIS 中相当简单地编写此过程,在控制流中使用 for 循环遍历文件目录,然后将每个文件名作为变量传递给数据流。csv 的文件名将绑定到该变量,并且您的目标也可以类似地绑定到文件名。只需在您的目标组件中使用批量模式,您应该会获得相当不错的效率。如果所有用户都可以访问该文件夹,并且您添加一个步骤来检查并查看目录中的文件是否已处理,或者在处理完文件后将它们移动到其他位置,则此方法非常有用。SSIS 进程可以直接从 SQL Server 上的 SSIS 目录调用,也可以定期调度。
或者,您可以使用bcp 实用程序来获得 CLI 体验。这可能要简单得多,因为它不需要编写 SSIS 进程和管理该进程,但它需要更多关于用户调用它的知识。此工具不要求文件位于服务器上:您作为调用用户提供文件的路径,以及用于身份验证的凭据,该工具将处理数据移动。