Monday, 17 September 2012

How to Import from DBF to SQL Database

Here is the example how to import from DBF table to SQL Databases.

ALTER PROCEDURE [dbo].[Import_Table]
AS
    DECLARE @vSQL varchar(3500)
    DECLARE @vSQL2 varchar(2000)
    DECLARE @vSQLD VARCHAR(1000)
BEGIN
       
    IF EXISTS(SELECT * FROM SYS.TABLES WHERE [NAME]='testtbl')
    BEGIN
        DROP TABLE testtbl
    END
   
    IF EXISTS(SELECT * FROM SYS.SERVERS WHERE [NAME]='DBF')
    BEGIN
        EXEC sp_dropserver 'DBF','droplogins'
    END

    EXEC SP_ADDLINKEDSERVER
        @SERVER='DBF', @SRVPRODUCT ='VFP',
        @PROVIDER='VFPOLEDB', @DATASRC='\\server\Temp\testtbl.DBF'

    SET @vSQL = 'CREATE TABLE [dbo].[testtbl](
    [LOGNo] [float] NULL,
    [SID] [varchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [LS] [datetime] NULL,
    [LE] [datetime] NULL,
    [LT] [varchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [GP] [varchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [LH] [varchar](1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [LD] [float] NULL,
    [LU] [varchar](1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [LA] [float] NULL,
    [CL] [varchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [PI] [varchar](1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [HDL] [varchar](254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [LOGDATE] [datetime] NULL,
    [LOGTIME] [varchar](254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
     ) ON [PRIMARY]'
   
SET @vSQL2='INSERT INTO dbo.LV SELECT * FROM DBF...LV'
EXEC (@vSQL)
EXEC (@vSQL2)

    IF EXISTS(SELECT * FROM SYS.SERVERS WHERE [NAME]='mdbDB')
    BEGIN
        EXEC sp_dropserver 'DBF','droplogins'
    END
END