Sql-Server-2005

如何將此 SAS 文本文件載入到 SQL Server 2005

  • January 29, 2015

每 3 個月,我必須將幾個固定寬度的文本文件載入到我們的 SQL Server 2005 數據庫中。它們可以有 5 到 798 列(嚴重),並且這些列經常變化。

以下是固定寬度數據文件的範例:

010001    2000040620000406001200004060220000406
010001    2000040620001116002        0020000406
010006    2007051620070516001200706220120070516
010006    2010071520100908002        0020100715
010006    2010071520100715001201007300120100715
010007    1993110919931109001199311230219931109

對於文本文件,我還收到了一個記錄列和數據類型的“SAS”文件。這是一個例子:

/************************************************************************
*           Job Number: 119164
*     Procedure Number: 6
*        Record Length: 47
*************************************************************************/

INPUT

        @1   PRVDR_NUM                         $CHAR10.    
       @11   SRVY_DT                           $CHAR8. /*YYYYMMDD*/
       @19   CYC_VISIT_DT                      $CHAR8. 
       @27   CYC_VISIT_NUM                     3.
       @30   POC_SGN_DT                        $CHAR8. 
       @38   LSC_BLDG_CNT                      2.
       @40   SRVY_CMPLTN_DT                    $CHAR8. 
;

***************************************************************;
***   SAS LABEL Statement Follows                              ;
***************************************************************;

LABEL

     PRVDR_NUM                         = 'CCN'
     SRVY_DT                           = 'Survey Date'
     CYC_VISIT_DT                      = 'Cycle Visit Date'
     CYC_VISIT_NUM                     = 'Cycle Visit Number'
     POC_SGN_DT                        = 'Administrator Signed POC Date'
     LSC_BLDG_CNT                      = 'Building Count'
     SRVY_CMPLTN_DT                    = 'Survey Completion Date'
;

我從中獲取此文件的人稱其為“SAS 輸入程式碼”

有沒有載入固定寬度文件也可以使用SAS文件創建表的解決方案?我目前的解決方案太複雜了,我真的希望有一個替代方案。

我會寫一個python腳本,

  1. 解析列描述符文件,獲取它們的寬度和名稱
  2. 遍歷輸入文件中的所有數據,將數據拆分為變數
  3. 使用 SQLAlchemy 將這些變數構造一個 sql 查詢到 sql 伺服器,以逐個發送或作為一批行或一次 1000 個發送

該腳本將採用列描述符文件和數據文件。該腳本還將有一個包含數據庫連接字元串的數據庫配置文件,或者您可以將其作為第三個參數傳遞。

我會為你寫這個,但我現在沒有時間。這是一個需要解決的巧妙問題。然而,Python 是完美的。我希望我的 SAS 問題如此簡單。

引用自:https://dba.stackexchange.com/questions/90329