Hello Everyone,

I need to upload excel sheet in to the database. Which i am doing with the query

SELECT * INTO temp FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
    'Excel 8.0;Database=C:\Dokumente und Einstellungen\l.varada\Desktop\BA-Control.xls',
        'SELECT * FROM [qry_BA_Controlling (Report)$]')

Here C:\Dokumente und Einstellungen\l.varada\Desktop\BA-Control.xls is the path from where the excel file needs to be fetched.
qry_BA_Controlling (Report) is the name of the worksheet.

So on executing the query, a table with name 'temp' is created. With records that are populated from excel.

Now here i have a date field in excel. sometimes the values of this field are not uploaded properly into the temp table. The values for this date field are set to NULL eventhough they have values in EXCEL.

I have modified my query so,

Insert into temp Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
        'Excel 8.0;Database=C:\Dokumente und Einstellungen\l.varada\Desktop\BA-Control.xls',
         HDR=YES', 'SELECT * FROM [qry_BA_Controlling (Report)$]')

Here temp is an existing table, i have defined the date type of the field [creation date] to varchar and uploaded the excel. Then i used **convert** to change the datatype to the correct format..

update temp set [Creation date] = CONVERT (varchar,[Creation date],101)

Even now it is populating NULL values..Or this conversion needs to be done while uploading. if so, please let me know or suggest me an alternative approach..

SQL server is trying to be smart ass - that is why things don't work. Algorithm used consider the first row to be template and this only row is analyzed for possible meaning (date, number, text etc.). The 2nd and following rows are either converted into matching format or NULL then. This is a bit weird, but it is exactly how it works.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.