Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Impossibile importare dati da Excel 2003 al database utilizzando la funzione openrowset

Query SQL per la funzione OPENROWSET :--

1) Aprire SQL Server Management Studio

2) Apri il query pad e scrivi i seguenti comandi

3) Per Excel 97 – 2003 file che sono file con estensione XLS utilizzare

SELECT * INTO [dbo].[Addresses]
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\SQL Scripts\msp.xls;IMEX=1;HRD=Yes','SELECT * FROM [Sheet1$]')

io. Creerà una tabella con nome Indirizzi nel database correntemente selezionato.

ii. Microsoft.Jet.OLEDB.4.0 è il driver utilizzato per la conversione

iii. File Excel con percorso - D:\SQL Scripts\msp.xls

iv. Proprietà IMEX=1 inclusa, le colonne che contengono tipi di dati misti vengono trattate come tipi di dati stringa/testo.

v. La proprietà HRD =Yes significa che la riga superiore del file excel è composta dal nome dell'intestazione della colonna

vi. Foglio1 è il nome del foglio che desideri importare

vii. Excel 8.0 specifica che si tratta di un file excel in formato 97 – 2003

4) Per utilizzare la query del filtro l'utente può utilizzare la clausola where anche con questo comando come

SELECT * INTO [dbo].[Addresses]
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\SQL Scripts\msp.xls;IMEX=1;HRD=Yes','SELECT * FROM [Sheet1$]') where [column_name]=’value’

5) Per copiare il file excel nella tabella SQL predefinita, utilizzare la funzione OPENROWSET con il comando di inserimento come:-

Create table Custom (Source_IP_ADD varchar(20),API_NAME varchar(50),COUNT_NO varchar(5),CLIENT_ID varchar(50),Date_OF_INVOKE varchar(50))

INSERT INTO [dbo].[Custom] ( [Source_IP_ADD], [API_NAME], [COUNT_NO], [CLIENT_ID], [Date_OF_INVOKE])

    SELECT [Source_IP_ADDR], [API_NAME], [COUNT_NO], [CLIENT_ID], [Date_INVOK] FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=D:\SQL Scripts\msp.xls;IMEX=1;HRD=Yes','SELECT * FROM [Sheet1$]')

6) Per Excel 2007 – 2010 file che sono file con estensione XLSX utilizzare

SELECT *INTO [dbo].[Indirizzi]DA OPENROWSET('Microsoft.ACE.OLEDB.12.0' ,'Excel 12.0;Database=D:\SQL Scripts\msp.xlsx;HDR=YES;IMEX=1' ,'SELECT * DA [Foglio1$]')

io. Creerà una tabella con nome Indirizzi nel database correntemente selezionato

ii. Microsoft.ACE.OLEDB.12.0 è il driver utilizzato per la conversione

iii. File Excel con percorso - D:\SQL Scripts\msp.xlsx

iv. Proprietà IMEX=1 inclusa, le colonne che contengono tipi di dati misti vengono trattate come tipi di dati stringa/testo.

v. La proprietà HRD =Yes significa che la riga superiore del file excel è composta dal nome dell'intestazione della colonna

vi. Foglio1 è il nome del foglio che desideri importare

vii. Excel 12.0 specifica che si tratta di un file excel in formato 2007 – 2010

7) Per copiare il file excel nella tabella SQL predefinita, utilizzare la funzione OPENROWSET con il comando di inserimento come:-

Create table Custom (Source_IP_ADD varchar(20),API_NAME varchar(50),COUNT_NO varchar(5),CLIENT_ID varchar(50),Date_OF_INVOKE varchar(50))

INSERT INTO [dbo].[Custom] ( [Source_IP_ADD], [API_NAME], [COUNT_NO], [CLIENT_ID], [Date_OF_INVOKE])
SELECT [Source_IP_ADDR], [API_NAME], [COUNT_NO], [CLIENT_ID], [Date_INVOK] FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0' ,'Excel 12.0;Database=D:\SQL Scripts\msp.xlsx;HDR=YES;IMEX=1' ,'SELECT * FROM [Sheet1$]')