XL 2019 importation plusieurs fichiers Excel au même temps dans SQL SERVER SSMS

lalaimia

XLDnaute Nouveau
Bonjour l'équipe,

je veux savoir s'il vous plait ,si quelqu'un a une astuce de comment importer plusieurs fichiers Excel (CSV ou xlsx) au même temps vers une base de donnée SQL server SSMS (moi j'ai pu importer que un par un) sachant que j' ai 50 tables chaque jour à actualiser


merci , dans l'attente de votre retour
 

dysorthographie

XLDnaute Accro
Bonsoir,
pour importer des CSV dans SQL Server!

il ce peux qu'il faille créer un fichier schema.ini pour donner des précision sur la structure des CSV, le ca échéant on en reparlera!
VB:
Sub test()
Dim Cn As Object, GenereCSTRING As String

Const MyServeur = "MyServeur", MyDATABASE = "MyDATABASE", MyUID = "MyUID", MyPwd = "MyPwd"
Const Rep = "C:\Myrep"
    GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Rep & ";Extended Properties=""Text;HDR=YES;FMT=Delimited;"""
    Set Cn = CreateObject("Adodb.Connection")
    With Cn
        .Open GenereCSTRING
        lst = TableToutes(Cn)
        For i = 0 To UBound(lst)
            .execute "Insert into  [ODBC;Driver={SQL Server};SERVER=" & MyServeur & ";DATABASE=" & MyDATABASE & ";UID=" & MyUID & ";Pwd=" & MyPwd & "].[TableSqlServer] select * from [" & lst(i) & "]"
        Next
        .Close
    End With
End Sub
Public Property Get TableToutes(Connexion As Object)
Dim t() As String, i As Integer
TableToutes = False
With Connexion.OpenSchema(20)
    While Not .EOF
        ReDim Preserve t(i)
        t(i) = !TABLE_NAME
        i = i + 1
        .MoveNext
    Wend
    .Close
    TableToutes = t
End With
End Property
 
Dernière édition:

lalaimia

XLDnaute Nouveau
Bonsoir,
pour importer des CSV dans SQL Server!

il ce peux qu'il faille créer un fichier schema.ini pour donner des précision sur la structure des CSV, le ca échéant on en reparlera!
VB:
Sub test()
Dim Cn As Object, GenereCSTRING As String

Const MyServeur = "MyServeur", MyDATABASE = "MyDATABASE", MyUID = "MyUID", MyPwd = "MyPwd"
Const Rep = "C:\Myrep"
    GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Rep & ";Extended Properties=""Text;HDR=YES;FMT=Delimited;"""
    Set Cn = CreateObject("Adodb.Connection")
    With Cn
        .Open GenereCSTRING
        lst = TableToutes(Cn)
        For i = 0 To UBound(lst)
            .execute "Insert into  [ODBC;Driver={SQL Server};SERVER=" & MyServeur & ";DATABASE=" & MyDATABASE & ";UID=" & MyUID & ";Pwd=" & MyPwd & "].[TableSqlServer] select * from [" & lst(i) & "]"
        Next
        .Close
    End With
End Sub
Public Property Get TableToutes(Connexion As Object)
Dim t() As String, i As Integer
TableToutes = False
With Connexion.OpenSchema(20)
    While Not .EOF
        ReDim Preserve t(i)
        t(i) = !TABLE_NAME
        i = i + 1
        .MoveNext
    Wend
    .Close
    TableToutes = t
End With
End Property
 

lalaimia

XLDnaute Nouveau
je vous remercie dysorthographie pour votre retour , mais j'ai pas trop compris ce que vous m'avez envoyer, si par exemple j ai 3 tables CSV : VENTE et CONTROLE et PRODUCTION avec le nom de mon serveur "LAPTOP-Q38S46F9", comment je peux procéder et comment je vais exécuter ce code pour les 3 tables au mêmes temps? je veux aussi mettre ces tables dans la base de données MASTER dans SQL server SSMS,


dans l'attente de votre réponse et merci énormément
 

dysorthographie

XLDnaute Accro
Bonjour,
je veux savoir s'il vous plait ,si quelqu'un a une astuce de comment importer plusieurs fichiers Excel (CSV ou xlsx) au même temps vers une base de donnée SQL server SSMS (moi j'ai pu importer que un par un) sachant que j' ai 50 tables chaque jour à actualiser
tu as plusieurs fichier Excel(CSV ou XLS) j'en est conclus que c'était du CSV!
tu as 50 tables j'en es conclu que tu voulais automatiser l'importation de tes 50 fichiers CSV dans SQL Serveur.

comme le langage de prédilection de SQL serveur ce trouve être le SQL et qu'il es possible de faire également du SQL sur de fichier CSV j'ai pensé qu'utiliser SQL pour lier les 2 type de table était une bonne idée!

pour ce faire il faut faire une requête d'ajout des valeur du fichier SCV dans la table SQL Serveur correspondante.

dans l'exemple fourni au poste #5 je ne sais pas si le nom du CSV correspond au nom de la table SQL Serveur et même si la structure du CSV correspond au format français ou américain!

en revanche j'ai conclue que les 50 CSV étaient dans le même répertoire

s'ache qu'il es possible de gérer du CSV avec du SQL. il faut pour cela considérer le répertoire ou ce trouve les fichiers comme un base de données!

pour ce connecter à une base de données on utilise ADODB.connection; on lui donne les information de connexion ;
pour CSV:
VB:
 "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Rep & ";Extended Properties=""Text;HDR=YES;FMT=Delimited;"""
Rep étant le répertoire ou ce trouve les Fichier CSV et HDR=YES pour dire si la première ligne est la zone de tire de colonnes Yes/no;

pour exécuter une requête de sélection sur un fichier CSV on considère le nom des champs séparé par une virgule ou on met une étoile si on récupère tous les champs!

Code:
"Select Champ1,Champ2,Champ3 from [Fichier#Csv]" 'on remplace le . par #
"Select * from [Fichier#CSV]"

pour faire un lien entre CSV et SQL serveur il me faut fournir dans la requête les information de connexon SQL serveur
Code:
"Insert into [CnSqlServeur].[Table] select * from [Fichier#CSV]"

pour ce faire je dois m'identifier auprès d'SQL Serveur via ADODB!

Code:
CnSqlServeur="[ODBC;Driver={SQL Server};SERVER=" & MyServeur & ";DATABASE=" & MyDATABASE & ";UID=" & MyUID & ";Pwd=" & MyPwd & "]
reste à ta charge de définir les information de connexon à ta base de données care tu imagine bien que je les connais pas!

Code:
Const MyServeur = "MyServeur", MyDATABASE = "MyDATABASE", MyUID = "MyUID", MyPwd = "MyPwd"

imaginons que les données de la table VENTE ce trouve dans le fichier VENTE.CSV voila le type de requête que tu pourrais faire!
Code:
"insert into [" & CnSqlServeur & "].[VENTE] select * from [VENTE#CSV]"

Public Property Get TableToutes(Connexion As Object) te retourne un tableur avec tous de tous les fichier CSV ce trouvant dans le répertoire.

notes que les fichiers CSV par défaut sont avec la virgule [,] comme séparateur de colonne et le point [.] comme séparateur décimale. pour tous autre format il faut créer un fichier schema.in! si c'est ton cas il faudra qu'on en parle!
 

merinos

XLDnaute Accro
Bonjour a tous,

il est possible d'integer du code M dans SQL server.

C'est fait pour.

Je sais créer le code dans Power BI & Excel, mais j'ai jamais réussi a le mettre dans SQL server.
J'ai donné un cours de M a un DBA chez un client, et il a integré ce code en 15 secondes.

Ne pas oublier d'importer la liste des fichier déja traités... pour éviter un double import.
 

Discussions similaires