2011-02-03 27 views
5

Anteriormente utilicé la clase SQLBulkCopy para cargar datos en un servidor MS SQL Server. Los resultados fueron muy buenos y funcionó exactamente como lo pretendía.Cómo insertar a granel en MySQL usando C#

Ahora, estoy tratando de usar una tarea de script en SSIS para cargar datos en una base de datos MySQL (5.5.8) utilizando una conexión ODBC o ADO.NET (¿lo recomiendo?).

Las columnas en mi conjunto de datos se corresponden con las columnas de la tabla MySQL. ¿Cuál es la mejor manera de hacer una inserción masiva de un conjunto de datos en una base de datos MySQL?

+2

Si el conjunto de datos está en un formato de texto, no es necesario escribir un programa, acaba de escribir un 'CARGA DE DATOS La consulta de INFILE' y MySQL cargarán el archivo. –

+0

Dan, gracias por la sugerencia Voy a programar el SSIS para cargar una serie de archivos de texto, y necesito verificar el contenido de algunos archivos antes de decidir insertar los datos. Es por eso que estoy haciendo esto programáticamente. – yamn2

Respuesta

13

Puede utilizar el MySqlBulkLoader se suministra con el conector de MySQL para .NET:

var bl = new MySqlBulkLoader(connection); 
bl.TableName = "mytable"; 
bl.FieldTerminator = ","; 
bl.LineTerminator = "\r\n"; 
bl.FileName = "myfileformytable.csv"; 
bl.NumberOfLinesToSkip = 1; 
var inserted = bl.Load(); 
Debug.Print(inserted + " rows inserted."); 
+0

He intentado el mismo código pero no está insertado, siempre permanece en cero. – rahularyansharma

+0

@rahularyansharma asegúrese de que su instalación de MySQL sea compatible con LOAD_DATA_INFILE (http://dev.mysql.com/doc/refman/5.1/en/connector-net-programming-bulk-loader.html) ya que MySQLBulkLoader es solo una envoltura alrededor de él . –

+0

cuando ejecuto este comando desde el símbolo del sistema ¡está funcionando! – rahularyansharma

Cuestiones relacionadas