2010-10-18 10 views
5

De vez en cuando me encuentro escribiendo un script único para importar algunos datos CSV en una base de datos, haciendo una lógica de columna (por ejemplo, convertir column3 en mayúscula) y/o mapeo de campo (la columna 2 en el csv va a la columna 3 en la base de datos, etc.).buena herramienta para importar rápidamente algunos datos csv al servidor sql

¿Hay alguna buena herramienta que pueda hacer esto más fácil?

La menor cantidad de características que necesitaría es:

  • elegir delimitador
  • Ser capaz de mapear la columna X de la columna Y en el PP
  • la configuración de ajustes para las columnas no en el archivo csv

SQL server management studio casi puede hacerlo, excepto que no se puede especificar ningún valor predeterminado para los valores que no figuran en el archivo csv. Entonces, primero tendría que crear columnas adicionales en Excel.

Respuesta

7

eche un vistazo a 6 ways to import data into SQL Server para algunas ideas, creo que SSIS sería su mejor opción ... pero hay una curva de aprendizaje. O BCP en una tabla de ensayo, masaje de los datos allí y luego importar intio la mesa real

1

Sql Server Integration Services (SSIS) es la herramienta que normalmente uso para tales fines. Lo bueno de una herramienta como esta es que es muy rápida, flexible y puede controlar el tamaño de los lotes.

1

haga clic derecho en su base de datos, vaya a Tareas> Datos de importación y siga el asistente para importar datos. Es una forma agradable y más fácil. También mire siguiente:

http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server/

+0

he mencionado esta herramienta en mi pregunta. El inconveniente de esta herramienta es que no permite el suministro de valores predeterminados para las columnas que están en la base de datos pero no en el CSV. – Toad

+0

Acepto, siempre se puede actualizar la tabla después de la importación o la restricción predeterminada para las columnas se solucionará fácilmente eso. –

+0

Tarea-> Importar tampoco maneja el CSV entrecomillado, que es necesario para algunos códigos postales de los EE. UU., Que pueden comenzar con cero, o códigos de libro mayor heredados que a menudo no tienen relleno. – Tim

5

La herramienta definitiva "mejor" para la importación y exportación de datos hacia y desde SQL Server es, en mi opinión, la BCP utility.

NO se deje intimidar por el hecho de que no hay una interfaz gráfica de usuario disponible para usted. Esta herramienta expone la más amplia gama de funcionalidades para el codificador y también ofrece el mejor rendimiento de todas las herramientas SQL Server ETL, de hecho.

3

Como dices, estás buscando una herramienta para hacer esto, proporcionamos una que creo que te resultará muy interesante, ya que manejará los valores predeterminados, así como la validación y la carga en tu tabla y columnas elegidas.

La herramienta verificará los tipos de datos contra el destino y luego validará la importación al envolver filas o toda la información dentro de una transacción e informará cualquier problema en cada fila.

hay un puesto específicamente relacionados con la importación de CSV con la función: http://leansoftware.net/tabid/123/g/posts/t/17/Validate-and-Upload-CSV-file-to-a-database.aspx

0

Para lo que vale, me escribió this pequeño script en Python que hace exactamente eso (y algunas cosas más). Básicamente analiza archivos csv y escribe sentencias de inserción SQL. También puede crear múltiples registros relacionados en diferentes tablas desde una única fila csv. Todo lo que tienes que hacer es especificar qué va a dónde y cómo se relacionan las cosas.

una especificación de importación para una tabla 'departamento' podría ser algo como esto:

DEPARTMENT_MAP = { 
    '_oid':    DynamicValue(OidFactory()),     # Compute _oid dynamically 
    '_publicobj_oid': XReference('publicobject', 'sole', '_oid'), # Copy _oid value from 'sole' instance in 'publicobject' table 
    'name':    ColumnValue('Department', convert=quote), # Read from csv and put into quotes 
    'building_no':  ConstValue('5')        # Always 5 
    'floor':   ColumnValue('Floor', convert=upper)   # Read from csv and convert to upper case 
} 
Cuestiones relacionadas