2010-11-04 70 views
0

嗨,大家好,我在MySQL中完成了大部分工作,但最近被委託在SQL Server上完成一些數據庫工作。我意識到數據庫的工作方式非常類似。將SQL Server數據(固定長度)每天導出到SFTP服務器上

我的任務很簡單,就是將SQL Server 2008數據庫中的數據作爲固定長度的文件每天導出到安全的ftp服務器。

如果我使用的是PHP,我可能會寫一個php腳本來完成cron作業。但在這種情況下,我沒有任何訪問權限。從我看來,似乎我可以使用SQL Server 2008本身爲我做這個。

任何人都可以給任何指針,讓我知道這是一件容易的事情。我不想承擔超出我技能的工作;)

回答

2

每個SQL Server安裝(包括Express版本)都附帶一個名爲bcp.exe(Bulk Copy實用程序)的小工具。它支持兩種格式,本地和字符。您可能對字符格式感興趣,請參閱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來幫助您安排任務。

+0

所以我會使用任務計劃程序並創建一個任務來運行bpc.exe(帶有一些命令)來生成該文件,然後在計劃程序中創建另一個任務來獲取此文件並將其粘貼到遠程sftp上。它是如此簡單? – Roeland 2010-11-04 20:10:56

+0

我會將整個taks打包在.cmd文件中,並將其作爲一項任務進行安排。 – 2010-11-04 20:24:54

1

如果您可以使用SQL Server Integration Services,請查看我們的BizCrypto產品中的SFTP task。藉助集成服務,您可以構建文件並將其傳輸到遠程SFTP服務器。

+0

這看起來是一個1000美元的產品。我不認爲我有爲此提供的預算。你說SFTP傳輸不能通過SQL Server本身完成? – Roeland 2010-11-04 17:26:58

+0

@Roeland:SSIS是SQL Server本身和所有版本的一部分,但Express。您是否在使用SQL Server Express Edition進行任務? – 2010-11-04 17:35:31

+0

@Roeland Remus在他的回答中提到,您可以按計劃運行一些外部SFTP客戶端。此外還存在其他SSIS SFTP任務,但我不記得任何免費的。 – 2010-11-04 18:34:12

相關問題