Muchas gracias, lo probare.
Aunque he encontrado un comando interno del programa sqlite3 que ejecuto
desde el shell de sistema
sqlite3 -csv base.db ".import datos.csv tabla"
y va que vuela!
Karl
"Jose F. Gimenez" <
jfgimenez@wanadoo.es> escribió en el mensaje
news:4bf6a297$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Karl,
>
>> Necesito crear una tabla SQLLite desde un dbf con 50000 registros, y
>> busco la manera más eficiente y rápida.
>>
>> 1- ¿Hay alguna instrucción SQL tipo Append From ?
>
> No, aunque el IDE sí trae una utilidad que lo hace. Abre el gestor de
> bases de datos sqlite (en el menú "Base de datos", "Explorar SQLite...");
> la utilidad que digo es el cuarto botón de la toolbar.
>
>
>> 2- ¿Creo 2 datasets y recorro cada registro y campo?
>
> Funciona, pero es lento.
>
>
>> 3- ¿ oDataSet:AddNew o Execute("INSERT...") ?
>
> Siempre es más rápido usar Execute() con las sentencias exactas que
> necesitas. Y asegúrate de que haces toda la importación en una
> transacción, que es como SQLite va rápido de verdad.
>
> Lo mejor es que utilices una rutina de esta forma:
>
> USE fichero
> WITH OBJECT oDataSource
> :BeginTrans()
> cSql := "INSERT INTO tabla( campo1, campo2, campo3 ) VALUES ( ?, ?,
> ? )"
> WHILE !Eof()
> :Execute( :BuildSqlSt( cSql, fichero->campo1, fichero->campo2,
> fichero->campo3 ) )
> SKIP
> ENDDO
> :CommitTrans()
> END
>
>
> --
> Un saludo,
>
> José F. Giménez
>
http://www.xailer.com
>
http://www.xailer.info