2017-10-19 16 views
1

J'ai un fichier Excel avec des données pour ces colonnes: ID, nom, numéro de téléphone. Mais la table dans SQL prend également l'adresse - qui n'est pas dans le fichier Excel. Cela provoque l'erreur suivante:Comment insérer en vrac à partir d'un fichier Excel qui n'a pas les mêmes colonnes que la table?

Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for column address

Si je supprime la colonne d'adresse de la table dans SQL Server, je ne reçois pas cette erreur lors de l'importation. Je suis d'accord avec le champ d'adresse étant vide après l'importation.

Voici mon SQL pour l'importation:

BULK INSERT tableName FROM filePath 
WITH (
Datafiletype = 'char', 
Fieldterminator = '\t', 
Rowterminator = '\n', 
Firstrow = 2 
) 

J'utilise SQL Server.

+0

C'est un moyen hacky mais ce qui vous empêche d'utiliser la combinaison de texte Excel pour faire un géant INSERT interroger sur cela? – Magisch

+0

Comme supposons que vous mettez bas 'INSCRIRE DANS myTable (ID, Nom, Téléphone) VALEURS' et ensuite pour chaque ligne dans la feuille Excel vous faites '=" ("+ A1 +", '"+ B1 +"', '" + C1 + '), "' et concattez cela ensemble, puis exécutez-le. – Magisch

Répondre

3

Vous pouvez créer une vue:

create view v_tableName as 
    select id, name, phone_number 
    from tableName; 

charger ensuite le fichier dans la vue:

BULK INSERT v_tableName FROM filePath 
    WITH (Datafiletype = 'char', 
      Fieldterminator = '\t', 
      Rowterminator = '\n', 
      Firstrow = 2 
     );