Problème import données dans table liée SQL sous Access

Problème import données dans table liée SQL sous Access - SQL/NoSQL - Programmation

Marsh Posté le 01-09-2009 à 11:41:45    

Bonjour,

 


J'ai un gros volume de données à traiter (100 Go) sous forme de fichiers .csv (environ 1500). avec ce volume de données, une base Access était tout simplement impensable donc je me suis tourné vers une base SQL. Mon idée; faire une table liée sous Access avec la table SQL et faire tourner un script VBA pour importer à la chaine les fichiers .csv.

 

Sur le papier ça marche, ça marche même très bien ! En testant en local sur Access tout marche comme sur des roulettes, coté MySQL aussi. C'est quand je lui donne la table liée SQL en destination que les ennuis arrivent..Au milieu de l'exécution de la Sub d'import, il m'affiche un message me disant "ressources insuffisantes" alors que la machine est à 20% max.........

 

Je voudrais savoir s'il y a un timer ou bien un buffer quelconque coté Access ou coté MySQL qui ferait que.......ca part en sucette  [:cerveau klem]

 

:jap:


Message édité par alkashee le 02-09-2009 à 08:20:37

---------------
Shooter ou être shooté, that iz the question
Reply

Marsh Posté le 01-09-2009 à 11:41:45   

Reply

Marsh Posté le 04-09-2009 à 10:22:40    

Personne ne sait  :sweat:  ?
 
J'ai essayé sur ma machine perso, sous Access 2007 et ça me met la même chose :@
 
Le pire c'est que ça doit être une petite merde de rien du tout....

Reply

Marsh Posté le 04-09-2009 à 10:50:46    

J'en ai aucune idée (sauf qu'effectivement 100Go de données dans ACCESS c'est même pas la peine d'y penser), mais il y a une raison particuliere pour que tu passes par une table liée sous ACCESS au lieu de scripter directement un import de tes csv dans ta base MySQL?
 
EDIT : En fait je suis en train de me dire un truc.
 
Tu essayes de mettre tes 100Go de données dans une table ACCESS et de la lier avec une table MySQL mais si MySQL doit pas trop te faire chier sur la taille de la base (à partir du moment où tu es pas en FAT32 en tout cas) ACCESS il te dit niet après 2Go il me semble...
 
Il va vraiment falloir que tu zappes ACCESS de ton processus ou que tu effaces tes données coté ACCESS au fur et à mesure de tes imports mais ça fait un peu usine à gaz.


Message édité par Wysi le 04-09-2009 à 11:04:15
Reply

Marsh Posté le 07-09-2009 à 09:51:48    

bonjour,

 


En fait le 'pitch' de la chose ( :pt1cable: ), c'est que les données initiales sont des captures de trames sous forme de fichier de 500 Mo chacun, pour une somme de 110 go.

 

Mon travail est de sortir tout plein de courbes à partir du résultat des requêtes issues de ces données, d'où mon orientation sur Access pour la partie génération de requêtes et d'états. Ayant très vite compris la limitation d'Access en terme de taille, j'ai eu l'idée de passer par une table SQL liée par un pilote ODBC afin de contourner cette limitation et de pouvoir traduire les demandes client en terme de requêtes sans passer par du SQL pur et dur (oui, je suis une faignasse sur ce coup-là :o)

 

Pour l'import, le but de la chose était d'écrire un script en VBA qui importait directement les données dans la table liée, donc Access me servait uniquement d'interface, étant donné que j'écrivais directement dans la table SQL

 

Voici le code en question:

 


Function Transfert()

 

Dim rep, Dossier As String

 

Dossier = "C:\Documents and Settings\plmc12811\Bureau\test\Part_I\"
rep = Dir(Dossier & "*csv" )

  

Do While rep <> ""
   
    DoCmd.TransferText acImportDelim, "import_TIGRE", ""TIGRE", Dossier & rep, True
    rep= Dir
   
Loop

 

End Function

  


Après environ 5-6 secondes après le lancement, j'ai un message m'indiquant "ressources insuffisantes".

 

Mais si je change "TIGRE" (la table liée) par une autre table (identique) en local, ça marche !

 


J'ai essayé de porter tout ça sur une autre machine, même résultat, ce qui tend à prouver que ma machine ne serait pas en cause  :jap: .


Message édité par alkashee le 07-09-2009 à 09:57:48
Reply

Marsh Posté le 07-09-2009 à 11:25:48    

Je t'offre un compagnon de galere :
 
http://bytes.com/topic/access/answ [...] ows-2000-a
 
Il a contourné le probleme en important en local puis en transferant sur la table liée apparemment.

Reply

Marsh Posté le 07-09-2009 à 13:46:42    

Héhé les grands esprits se rencontrent, j'ai fait pareil :D
Seul souci, on dirait que MySQL tourne en rond au bout d'un certain temps d'importation et le nombre de ligne dans la table augmente, recule, augmente, recule... De plus je trouve l'importation bien plus longue dans le sens Access > SQL que quand on importe direct dans la table SQL (alors que pourtant vu que c'est une table liée, il devrait pas  y avoir trop de différence entre les deux...)


---------------
Shooter ou être shooté, that iz the question
Reply

Marsh Posté le 07-09-2009 à 13:57:44    

Et au final tu arrives à quelque chose de cohérent ou c'est mort?
Parce qu'il reste la solution d'inserer les lignes de tes fichiers une par une dans ta table via un DAO mais là je prédis une explosion des temps de traitement...
 
Ou bien zapper Access du moins dans la partie import des données et re-linker la table après.

Reply

Marsh Posté le 07-09-2009 à 16:43:49    

Et bien en fait j'ai fait........20 bases d'environ 2 Go chacune :D

 

Bon le truc c'est que je me retrouve avec une base de base et que c'est carrément la misère pour requêter :fou:


Message édité par alkashee le 07-09-2009 à 16:44:05

---------------
Shooter ou être shooté, that iz the question
Reply

Marsh Posté le 08-09-2009 à 16:41:34    

Si une âme charitable avait l'équivalent en script PHP pour l'import afin de tester ça, elle serait bien urbaine :jap:


---------------
Shooter ou être shooté, that iz the question
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed