每天将SQL Server数据(固定长度)导出到SFTP服务器

时间:2010-11-04 16:38:07

标签: sql database sql-server-2008 scripting sftp

嘿伙计们,我在MySQL工作的大部分工作,但最近的任务是在SQL Server上做一些数据库工作。我意识到数据库的工作方式非常相似。

我的任务很简单,每天将数据作为固定长度文件从SQL Server 2008数据库导出到安全的ftp服务器。

如果我使用的是php,我可能会编写一个用cron作业执行此操作的php脚本。但在这种情况下,我无法访问其中任何一个。根据我的阅读,似乎我可以使用SQL Server 2008本身为我这样做。

任何人都可以提供任何指示,如果这是一项简单的任务,请告诉我。我不想承担超出我技能水平的工作;)

2 个答案:

答案 0 :(得分:2)

每个SQL Server安装(包括Express版本)都附带了一个名为bcp.exe的小工具(批量复制实用程序)。它支持两种格式,原生和字符。您可能对字符格式感兴趣,请参阅Using Character Format to Import or Export Data。添加逗号,字段终止符将生成CSV文件:

bcp database.dbo.table out datafile.csv -c -t, -T

如果您想要固定长度的输出,那么最好的解决方案可能是指定格式文件。请参阅Specifying Data Formats for Compatibility by Using bcp

获得文件后,可以将其复制到SFTP服务器。 Windows平台上相当于cron的是Scheduler,请参阅The Task Scheduler

有更多更高级的解决方案,比如像Eugene建议的那样使用SSIS,这将为您提供更多的动力和控制。 SSIS附带SQL Server(但不包含Express Edition),在非Express版本中,您使用SQL Server Agent来帮助您安排任务。

答案 1 :(得分:1)

如果您可以使用SQL Server Integration Services,请查看我们的BizCrypto产品中的SFTP task。使用集成服务,您可以构建文件并将其传输到远程SFTP服务器。