Per la raó que sigui potser haguem de desenvolupar un paquet de Microsoft Integration Services que ens mogui dades de qualsevol origen a una taula que es troba en una base de dades MySQL.
La primera intenció serà fer-ho mitjançant una ADO.NET Destination i el provider de MySQL per a la connexió. Si ho fem així per inserir les dades directament, en crear el destí, seleccionar la connexió i després seleccionem la taula apareixerà un error com el següent al comprovar tot amb la vista prèvia o en intentar fer les assignacions.
Aquest error es deu a la manera de compatibilitat sql ansi de la base de dades mysql on intentem carregar les dades. Per solucionar hem de connectar al servidor de MySQL i canviar la compatibilitat ansi de sql de la base de dades *:
TOCA:~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 77 Server version: 5.0.51a-24+lenny3-log (Debian)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> select @@global.sql_mode; +-------------------+ | @@global.sql_mode | +-------------------+ | | +-------------------+ 1 row in set (0.00 sec)
mysql> set global sql_mode='ANSI'; Query OK, 0 rows affected (0.00 sec)
mysql> select @@global.sql_mode; +-------------------------------------------------------------+ | @@global.sql_mode | +-------------------------------------------------------------+ | REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI | +-------------------------------------------------------------+ 1 row in set (0.00 sec)
mysql> exit |
Si tornem a provar ja podrem tenir una vista prèvia de la taula o editar les assignacions entre columnes però ens trobarem un altre error en executar el paquet:
[ADO NET Destination [843]] Error: Excepció durant la inserció de dades. El missatge retornat pel proveïdor és: Unknown column 'p1' in 'field list' "
El driver té un problema i no ens deixa treballar bé amb paràmetres (que és com es construeix les insercions de registre en el destino) així que hem de fer otro workaround para solucionar este problema: treballar amb ADO.NET Destination en destino però amb 1 origen ODBC en la connexió. Això unit al tema de la modificació del sql_mode de la destinació MySQL ens permetrà fer la càrrega correctament.
* Cal destacar que la compatibilitat la podem canviar a nivell global com en l'exemple o només a nivell de session (amb el que hauríem d'afegir l'execució d'un comandament en primera instància per modificar el valor de @ @ SESSION.sql_mode). Más info aquí. Més info aquí.