2008-12-17 18 views

Respuesta

0

El asistente de importación ofrece esa opción. Puede usar la opción para escribir su propia consulta para los datos a importar, o puede usar la opción de copiar datos y usar el botón "Editar asignaciones" para ignorar las columnas que no desea importar.

+0

No me dio una opción para importar en una tabla existente, sólo la base de datos y se crearía una nueva tabla. (SQLServer 2008) – user47206

+0

Se encontró que eso funciona. Gracias. Ahora encontré un proplem más grande.Estoy usando Management Studio 2008 y la base de datos es 2000. Supuse erróneamente que fue 2005. – user47206

+0

Todavía no he usado Management Studio 2008 (estamos trabajando en 2005). Management Studio 2005 es compatible con 2000. – NYSystemsAnalyst

24

Microsoft suggest varios métodos:

  • datos de SQL Server Transformation Services (DTS)
  • Microsoft SQL Server 2005 Integration Services (SSIS) servidores
  • vinculada de SQL Server
  • consultas distribuidas
  • SQL Server
  • Objetos de datos ActiveX (ADO) y el proveedor Microsoft OLE DB para SQL Server
  • ADO y el proveedor Microsoft OLE DB para Jet 4,0

Si el asistente (DTS) no está funcionando (y creo que debería) que podría intentar algo como esto http://www.devasp.net/net/articles/display/771.html que básicamente sugiere hacer algo como

INSERT INTO [tblTemp] ([Column1], [Column2], [Column3], [Column4]) 

SELECT A.[Column1], A.[Column2], A.[Column3], A.[Column4] 
FROM OPENROWSET 
('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Excel.xls;HDR=YES', 'select * from [Sheet1$]') AS A; 
+0

Hmm. esto indica que tengo que tener excel en un servidor en lugar de mi pc. ¿Hay alguna manera de dirigirlo a mi pc? No he encontrado esa respuesta todavía. – user47206

+0

Cuando pruebo esto, aparece el error 'Error de sintaxis en la cláusula FROM. (Motor de base de datos Microsoft JET) ' – Techboy

+1

Desafortunadamente, esto no parece funcionar en Windows de 64 bits –

7

usted podría utilizar OPENROWSET, algo así como:

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;IMEX=1;HDR=NO;DATABASE=C:\FILE.xls', 'Select * from [Sheet1$]' 

Sólo asegúrese º La ruta es una ruta en el servidor, no su máquina local.

+1

¿DE NOSTRA MANERA DE ACCEDER A MI MÁQUINA LOCAL? – user47206

+0

Bueno, probablemente podría crear un recurso compartido en su máquina local y asignar una unidad de red desde su equipo SQL Server a ese recurso compartido, y acceder a su archivo de esa manera ... –

+0

Me sale el error, No puedo crear una instancia de OLE DB proveedor "Microsoft.Jet.OLEDB.4.0" para el servidor vinculado "(nulo)". –

3

Por 'the wiz' asumo que estás hablando del 'Asistente de importación y exportación de SQL Server'. (También soy bastante nuevo, así que no entiendo la mayoría de las preguntas, y mucho menos la mayoría de las respuestas, pero creo que entiendo esta). Si es así, ¿no podría tomar la hoja de cálculo, o una copia, borrar las columnas que no desea importar y luego usar el asistente?

Siempre he encontrado la capacidad de hacer lo que necesito con él y estoy solo en SQL Server 2000 (no estoy seguro de cómo difieren otras versiones).

Edit: De hecho, ahora lo estoy mirando y parece ser capaz de elegir qué columnas quiero asignar a qué filas en una tabla existente. En la pantalla 'Seleccionar tablas y vistas de origen', consulto la hoja de datos que estoy usando, selecciono 'Destino' y luego hago clic en el botón 'Editar ...'. Desde allí, puede elegir la columna Excel y la columna de la tabla para asignarla.

12

Esto puede sonar a la vuelta de la esquina, pero es posible que desee utilizar el código Excel to generate INSERT SQL que puede pasar al Analizador de consultas para crear su tabla.

funciona bien si usted no puede usar los asistentes porque el archivo de Excel no está en el servidor

+1

Esto siempre parece ser la manera más fácil para mí ... –

+0

This ([link] (http://venerableagents.wordpress.com/2012/03/29/excel-add -ins /)) es un método similar que utilizo para insertar datos en MySQL (el mismo método se puede usar aquí) – VenerableAgents

2

Microsoft Access es otra opción. Puede tener una base de datos de Access localmente en su máquina en la que importe las hojas de cálculo de Excel (asistentes disponibles) y link to the the SQL Server database tables via ODBC.

A continuación, puede diseñar una consulta en el acceso que anexa datos de la hoja de cálculo de Excel a las Tablas de SQL Server.

50

Una vez conectado a la base de datos Sql Server 2005, desde la ventana del Explorador de objetos, haga clic con el botón derecho en la base de datos en la que desea importar la tabla. Seleccione Tareas -> Importar datos. Esta es una herramienta simple y le permite 'mapear' los datos entrantes en la tabla apropiada. Puede guardar las secuencias de comandos para que se ejecuten nuevamente cuando sea necesario.

+1

Use SQL Server Management Studio para establecer una conexión con su base de datos. Entonces esta respuesta tiene sentido. Esta tarea inicia el Asistente de importación y exportación de SQL Server que incluye Microsoft Excel como fuente de datos. Esto está en contraste con la ejecución de la aplicación nativa Importar y Exportar SSIS que no tiene esta opción} :-(. – Suncat2000

+2

Tareas -> Importar datos no existe en ese menú en 2008. –

+2

Uso de SQL Server 2008 (no R2) I * ver * ver Tareas -> Importar datos al hacer clic con el botón derecho en una base de datos. –

0

Excel + + Perl SQLCMD = exceltomssqlinsert

y se puede utilizar Excel como su fronda de extremo a MSSQL db ... Nota truncar la tabla al comienzo de cada archivo de inserción SQL generado ...

4
go 
sp_configure 'show advanced options',1 
reconfigure with override 
go 
sp_configure 'Ad Hoc Distributed Queries',1 
reconfigure with override 
go 
SELECT * into temptable 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'Excel 8.0;Database=C:\Documents and Settings\abhisharma\Desktop\exl\ImportExcel2SQLServer\ImportExcel2SQLServer\example.xls;IMEX=1', 
       'SELECT * FROM [Sheet1$]') 

select * from temptable 
+0

por favor formatee su código apropiadamente. ¡Gracias! – Trufa

4

Otra opción es utilizar VBA en Excel y escribir una macro para analizar los datos de la hoja de cálculo y escribirlos en SQL.

Un ejemplo es aquí: http://www.ozgrid.com/forum/showthread.php?t=26621&page=1

Sub InsertARecord() 
Dim cnt As ADODB.Connection 
Dim rst As ADODB.Recordset 
Dim stCon As String, stSQL As String 
Set cnt = New ADODB.Connection 
Set rst = New ADODB.Recordset 

stCon = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=JOEY" 
cnt.ConnectionString = stCon 
stSQL = "INSERT INTO MyTable (Price)" 
stSQL = stSQL & "VALUES (500)" 

cnt.Open 
rst.Open stSQL, cnt, adOpenStatic, adLockReadOnly, adCmdText 

If CBool(rst.State And adStateOpen) = True Then rst.Close 
Set rst = Nothing 
If CBool(cnt.State And adStateOpen) = True Then cnt.Close 
Set cnt = Nothing 

End Sub 
0

he utilizado DTS (ahora conocida como la importación de SQL Server y Asistente para exportación). He utilizado el presente tutorial el cual funcionó muy bien para mí, incluso en SQL 2008 y Excel 2010 (14.0)

espero que esto ayude a

-D

3

Si desea una herramienta visual con interfaz de escritorio incluyendo la validación .. es posible que así como esta herramienta Excel. También puede utilizar la herramienta para crear tareas de edición de datos de múltiples usuarios, o incluso pegar datos al servidor SQL de cualquier fuente ..

Cómo validar y Importar hoja de cálculo de Excel a la base de datos de SQL Server:

http://leansoftware.net/en-us/help/excel-database-tasks/worked-examples/how-to-import-excel-spreadsheet-to-sql-server-data.aspx

0

En primer lugar, pruebe la versión de 32 bits del Asistente de importación. Esto muestra muchos formatos de importación más compatibles.

Antecedentes: Todo depende de su instalación de Office (Runtimes Engines).

Si no tiene instalado Office 2007 o superior, el Asistente de importación (32 bits) solo le permite importar archivos de Excel 97-2003 (.xls).

Si tiene instalado Office 2010 y geater (viene también en 64 bits, no recomendado), el Asistente de importación también admite archivos Excel 2007+ (.xlsx).

Para tener una visión general sobre los tiempos de ejecución ver 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine

Cuestiones relacionadas