SET DATE TO YMD
* Abrir la Tabla
USE ?
nameFields = ''
tableFields = ''
numFields = AFIELDS(arrFields)
* Seleccionamos los archivos a generar
csvFile = PUTFILE("Archivo:",ALIAS(),"csv")
sqlFile = PUTFILE("Archivo:",ALIAS(),"sql")
FOR nCount = 1 TO numFields
nameFields = nameFields + arrFields(nCount,1) + ','
tableFields = tableFields + arrFields(nCount,1) + ' VARCHAR(MAX) NULL,' + CHR(13)
ENDFOR
nameFields = SUBSTR(nameFields, 1, LEN(nameFields)-1)
tableFields = SUBSTR(tableFields, 1, LEN(tableFields)-2)
* Generar CSV
COPY TO &csvFile FIELDS &nameFields DELIMITED WITH CHARACTER |
* Generar SQL
tableFields = 'CREATE TABLE [dbo].' + ALIAS() + '(' + tableFields + ') ON [PRIMARY]' + CHR(13) + "BULK INSERT dbo." + ALIAS() + " FROM '" + csvFile + "' WITH (FIELDTERMINATOR = '|')"
IF FILE(sqlFile)
gnSqlFile = FOPEN(sqlFile,12)
ELSE
gnSqlFile = FCREATE(sqlFile)
ENDIF
IF gnSqlFile < 0
WAIT 'No se puede Abrir el Archivo' WINDOW NOWAIT
ELSE
=FWRITE(gnSqlFile, tableFields)
* Crear Updates
FOR nCount = 1 TO numFields
nameFields = arrFields(nCount,1)
IF arrFields(nCount,2) = 'C'
updCommand = CHR(13) + 'UPDATE [dbo].' + ALIAS() + ' SET ' + nameFields + '=REPLACE(' + nameFields + ',' + "'" + '"' + "'" + ',' + "'')"
=FWRITE(gnSqlFile, updCommand)
ENDIF
ENDFOR
ENDIF
=FFLUSH(gnSqlFile)
=FCLOSE(gnSqlFile)
CLOSE DATABASES ALL
CLOSE TABLES ALL
CLOSE ALL
El programa pedírá el nombre de archivo para el CSV, así como el archivo SQL a generar, luego pedirá la tabla de la cual se generará el archivo CSV.
P.D. Es la manera más rápida que he encontrado para importar datos desde FOX a SQL Server.
****************************** ACTUALIZACIÓN ******************************
Prg en VFP para importar a MySQL.
SET DATE TO YMD
* Abrir la Tabla
USE ?
nameFields = ''
tableFields = ''
numFields = AFIELDS(arrFields)
* Seleccionamos los archivos a generar
csvFile = PUTFILE("Archivo:",ALIAS(),"csv")
sqlFile = PUTFILE("Archivo:",ALIAS(),"sql")
FOR nCount = 1 TO numFields
nameFields = nameFields + arrFields(nCount,1) + ','
tableFields = tableFields + arrFields(nCount,1) + ' VARCHAR(65535) NULL,' + CHR(13)
ENDFOR
nameFields = SUBSTR(nameFields, 1, LEN(nameFields)-1)
tableFields = SUBSTR(tableFields, 1, LEN(tableFields)-2)
* Generar CSV
COPY TO &csvFile FIELDS &nameFields DELIMITED WITH CHARACTER |
* Generar SQL
tableFields = 'CREATE TABLE ' + ALIAS() + '(' + tableFields + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' + CHR(13) + CHR(13)
tableFields = tableFields + "LOAD DATA LOCAL INFILE '" + STRTRAN(csvFile , '\', '/') + "' INTO TABLE " + ALIAS() + " FIELDS TERMINATED BY '|' ENCLOSED BY '" + '"' + "' LINES TERMINATED BY '\n' (" + nameFields + ");"
IF FILE(sqlFile)
gnSqlFile = FOPEN(sqlFile,12)
ELSE
gnSqlFile = FCREATE(sqlFile)
ENDIF
IF gnSqlFile < 0
WAIT 'No se puede Abrir el Archivo' WINDOW NOWAIT
ELSE
=FWRITE(gnSqlFile, tableFields)
ENDIF
=FFLUSH(gnSqlFile)
=FCLOSE(gnSqlFile)
CLOSE DATABASES ALL
CLOSE TABLES ALL
CLOSE ALL