2010-05-25 4 views
0

J'utilise ceci:inserts OPENROWSET null

insert into bla select * 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;HDR=YES;Database=c:\bla.xls', 
    'select * from [Sheet1$]'); 

mais pour une raison quelconque certaines valeurs contiennent nulles, bien que les données d'origine contient certainement des valeurs (par exemple « abc »). Quelle pourrait être la raison de ce comportement étrange. Merci.

Chris

+0

Est-ce que les colonnes contenant les valeurs nulles de type Mystère ont des valeurs purement numériques? – Thomas

Répondre

2

Essayez d'ajouter "; IMEX = 1" (à lire tous les champs sous forme de texte - cela pourrait avoir à faire avec des valeurs de mélange texte &).

La deuxième option consiste à essayer d'installer les composants Office Data Connectivity (à partir de http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en) et de contourner OLEDB. Puis configurez votre OPENROWSET en tant que tel:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
'Excel 12.0;Database=c:\bla.xls;HDR=Yes;IMEX=1','SELECT * FROM [Sheet1$]'); 

Bonne chance!

+0

En outre, consultez http://www.connectionstrings.com/excel qui suggère de modifier la valeur de Registre TypeGuessRows pour modifier le comportement de la façon dont le fournisseur détermine un type de données de colonnes. –

+0

merci cela fonctionne très bien. – cs0815

+0

Merveilleux .. J'ai lutté toute la journée pour résoudre le même problème. Je viens d'ajouter IMEX = 1 et ça marche plutôt bien. – satya

0

J'ai trouvé que régler Hkey_Local_Machine/Software/Microsoft/Jet/4.0/Moteurs/Excel/TypeGuessRows à zéro et en utilisant l'option IMEX = 1 résoudra le problème. On s'attend à une diminution des performances, car cela signifie que la colonne/feuille entière est examinée mais que je n'ai rien remarqué de significatif.

Questions connexes