1

Konu: DBF'leri SQL SERVER'a aktaran hazır program varmı ?

Elimdeki DBF leri yapısı ve içeriğiyle birlikte SQL SERVER'a aktaracak hazır program varmı acaba? Yani ben DBF'i göstericem, gerisini o halledicek.

Tembellik yapıyorum ama SQL SERVER'daki field type'larla boğuşuyorum hala. Hazırı varsa çok makbule geçer.

2

Re: DBF'leri SQL SERVER'a aktaran hazır program varmı ?

"sql server import and export wizard"   dtswizard.exe   ms in sql sitesinde bulabilirsin.

3

Re: DBF'leri SQL SERVER'a aktaran hazır program varmı ?

Fox un kendi upsizing wizard i var , ve oldukca basarili

4

Re: DBF'leri SQL SERVER'a aktaran hazır program varmı ?

Teşekkür ederim.

5 Son düzenleyen, river (15.06.2008 18:06:16)

Re: DBF'leri SQL SERVER'a aktaran hazır program varmı ?

Sadece SQL deki fieldtype lar ile boğuşma meselesine istinaden örnek olması için gönderiyorum. Gerçek kullanımda adapte etmen gereken şeyler olacak. Gördüğün gibi DBF tablolarının yapısının bir TABLO da bulunması esasına göre çalışıyor. ORACLE için kimi farklar var gerekirse gönderebilirim

Visual Fox Pro
PARAMETERS GenerateMode,AskingMode

 
CRLF = CHR(13)+CHR(10)
 
IF EMPTY(GenerateMode)
    GenerateMode = ""
ENDIF
IF EMPTY(AskingMode)
    AskingMode = .F.
ENDIF
 
USE SysFiles EXCLUSIVE
Replace ALL Result WITH .F.
GO Top
 
IF GenerateMode = "ALL"
    ScriptFileName = "Scripts\ALL_SQL.Sql"
    sfh = FCreate(ScriptFileName)
ENDIF
 
DO TableScripts
 
IF GenerateMode = "ALL"
    = FCLOSE(sfh)
EndIF
 
 
RETURN
 
 
Procedure TableScripts
 
DO WHILE !EOF()
 
    xTblName = TableName
    DO CreateScript WITH xTblName
    IF !EMPTY(AskingMode) AND MESSAGEBOX(xTblName,36,"TmtSoft") # 6
        EXIT
    EndIF
    SET FILTER TO !Result
    GO Top
 
ENDDO
 
 
SET FILTER TO Tag_Type = 1            & PRIMARY KEYS
GO Top
DO WHILE !EOF()
 
    _TableName = ALLTRIM(TableName)
    DO CreatePKScript
    SKIP
 
EndDo
 
SET FILTER TO Tag_Type = 2            & FOREIGN KEYS
GO Top
DO WHILE !EOF()
 
    _TableName = ALLTRIM(TableName)
    DO CreateFKScript
    SKIP
 
EndDo
 
SET FILTER TO Tag_Type = 3            & INDEXES
GO Top
DO WHILE !EOF()
 
    _TableName = ALLTRIM(TableName)
    DO CreateIdxScript
    SKIP
 
EndDo
 
SET FILTER TO
 
RETURN
 
 
PROCEDURE CreateScript
 
PARAMETERS _TableName
 
SET FILTER TO TableName = _TableName
_TableName = ALLTRIM(TableName)
 
IF EMPTY(GenerateMode)
    ScriptFileName = "Scripts\"+_TableName + ".Sql"
    sfh = FCreate(ScriptFileName)
ELSE
    = FWRITE(sfh,CRLF+CRLF+CRLF)
ENDIF
*= FWRITE(sfh,"
PROMPT Creating Table '"+_TableName +"'" +CRLF)
= FWRITE(sfh,"
CREATE TABLE "+_TableName + CRLF+"(")
GO Top
IlkFldName = .T.
 
DO WHILE !EOF()
    Replace Result WITH .T.
    IF EMPTY(SqlFldName)
        SKIP
        LOOP
    ENDIF
    IF !IlkFldName
        = FWRITE(sfh,"
,")
    ENDIF
    IlkFldName = .F.
    = FWRITE(sfh,SqlFldName+"
")
    DO Case
    CASE Field_TYPE = "
C"
        = FWRITE(sfh,"
NVARCHAR("+ALLTRIM(STR(Field_Len))+")")
    CASE Field_Type = "
D"
        = FWRITE(sfh,"
DATETIME")
    CASE Field_Type = "
N"
        = FWRITE(sfh,"
DECIMAL("+ALLTRIM(STR(Field_Len))+","+ALLTRIM(STR(Field_Dec))+")")
    CASE Field_Type = "
L"
        = FWRITE(sfh,"
DECIMAL(1,0)")
    OTHERWISE
        = MESSAGEBOX("
On " + _TableName + " at field " + SqlFldName+CHR(13)+"Undefined "+Field_Type,16,"TmtSoft")
    ENDCASE
    IF !Nullable
        = FWRITE(sfh,"
NOT NULL")
    EndIf
    = FWRITE(sfh,CRLF)
 
    SKIP
ENDDO
 
= FWRITE(sfh,"
)"+ CRLF)
 
IF EMPTY(GenerateMode)
 
    SET FILTER TO TableName = _TableName AND Tag_Type = 1
    GO Top
    IF !EOF()
        DO CreatePKSCript
    ENDIF
    SET FILTER TO TableName = _TableName AND Tag_Type = 2
    GO Top
    IF !EOF()
        DO CreateFKSCript
    ENDIF
    SET FILTER TO TableName = _TableName AND Tag_Type = 3
    GO Top
    IF !EOF()
        DO CreateIdxSCript
    EndIF
 
    = FCLOSE(sfh)
ENDIF
 
SET FILTER TO
 
RETURN
 
 
 
 
PROCEDURE CreatePKScript
 
*/PARAMETERS _TableName
 
= FWRITE(sfh,CRLF+CRLF+CRLF)
*= FWRITE(sfh,"
PROMPT Creating Primary Key on '"+_TableName +"'" +CRLF)
= FWRITE(sfh,"
ALTER TABLE "+_TableName + CRLF)
= FWRITE(sfh,"
WITH CHECK ADD CONSTRAINT "+ALLTRIM(Tag_Name)+" PRIMARY KEY"+CRLF)
= FWRITE(sfh,"
  ("+ALLTRIM(Tag_Fields)+")"+CRLF)
 
RETURN
 
PROCEDURE CreateFKScript
 
*/PARAMETERS _TableName
 
= FWRITE(sfh,CRLF+CRLF+CRLF)
*= FWRITE(sfh,"
PROMPT Creating Foreign Key on '"+_TableName +"'" +CRLF)
= FWRITE(sfh,"
ALTER TABLE "+_TableName + CRLF)
= FWRITE(sfh,"
ADD CONSTRAINT "+ALLTRIM(Tag_Name)+" FOREIGN KEY (")
= FWRITE(sfh,ALLTRIM(Tag_Fields)+"
)"+CRLF)
= FWRITE(sfh,"
  REFERENCES "+ALLTRIM(Trg_Table)+" ("+ALLTRIM(Trg_Field)+")"+CRLF)
 
RETURN
 
PROCEDURE CreateIdxScript
 
*/PARAMETERS _TableName
 
= FWRITE(sfh,CRLF+CRLF+CRLF)
*= FWRITE(sfh,"
PROMPT Creating Index on '"+_TableName +"'" +CRLF)
= FWRITE(sfh,"
CREATE INDEX "+ALLTRIM(Tag_Name)+" ON " + _TableName + CRLF)
= FWRITE(sfh,"
("+ALLTRIM(Tag_Fields)+")"+CRLF)
 
RETURN
 
 
 
 
 
*ALTER TABLE [Production].[WorkOrder] WITH CHECK ADD
*    CONSTRAINT [PK_WorkOrder_WorkOrderID] PRIMARY KEY CLUSTERED
*    (
*        [WorkOrderID]
*    ) ON [WorkOrderGroup];
*GO
*

6

Re: DBF'leri SQL SERVER'a aktaran hazır program varmı ?

Teşekkürler. Bu program üzerinde çalışıcam.

7 Son düzenleyen, river (17.06.2008 22:29:05)

Re: DBF'leri SQL SERVER'a aktaran hazır program varmı ?

kullanacaksanız eğer tablo yapısını ve alan bilgilerini ileteyim. aslında bulabilirsem bir program daha olacak o da hedef klasördeki DBF dosyalarını tek tek tarayıp structurlarını inceleyip burada kullanılan SysFiles tablosunu kuralına göre dolduruyordu. O da işinize yarayacaktır. Kullanacaksanız eğer aramam lazım, arayıp gönderebilirim.

8

Re: DBF'leri SQL SERVER'a aktaran hazır program varmı ?

Sağolun. Gerek yok. Ben zaten modifiye edeceğim için o kısmını kendim yapsam daha iyi.

9

Re: DBF'leri SQL SERVER'a aktaran hazır program varmı ?

Visual Fox Pro
USE SysFiles EXCLUSIVE

Replace ALL Result WITH .F.
GO Top

bölümünü beceremedim, yollayabilirmisin ltf.

VFP9 SP2

10

Re: DBF'leri SQL SERVER'a aktaran hazır program varmı ?

SysFiles isimli bir tablo yaratmış olmalısınız. O tabloda Result isimli ve Logic bir field olursa sorun yaşamazsınız.