martes, 10 de diciembre de 2019

Manejo de Archivos CSV con SQL Server

Los ficheros CSV (siglas del inglés comma-separated values) son un tipo de documento sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas (o punto y coma) y las filas por saltos de línea. Los campos que contengan una coma, un salto de línea o una comilla doble deben ser encerrados entre comillas dobles.

El formato CSV es muy sencillo y no indica un juego de caracteres concreto, ni cómo van situados los bytes, ni el formato para el salto de línea. Estos puntos deben indicarse muchas veces al abrir el fichero, por ejemplo, con una hoja de cálculo.

Fuente: http://es.wikipedia.org/wiki/CSV

Un archivo CSV, se puede crear desde notepad o Microsoft Excel y guardarlo como .csv, en este caso puede utilizar comas para separar entre campos.



Para leer el contenido de un archivo csv y guardarlo en una tabla con un estructura adecuada a las columnas del archivo csv se utiliza una sentencia T-SQL llamada BULK INSERT o instrucción de inserción masiva. con este comando puedes importar algún documento a SQL SERVER desde un txt, xml, etc. y agregar registros a la tabla correspondiente.

Para ejemplificar este caso, crearemos la tabla ALUMNO y luego se importará el contenido del archivo csv

Descargar el Archivo csv

create table ALUMNO
(
 DocumentoIdentidad varchar(11),
 Nombres varchar(50),
 Apellidos varchar(50),
 Edad int
)

BULK 
INSERT ALUMNO
from 'E:\_ASESORIAS\SQL Importar CSV EXCEL\listado alumnos.csv' 
WITH 
    ( 
        FIRSTROW = 1, 
        MAXERRORS = 0, 
        FIELDTERMINATOR = ',', 
        ROWTERMINATOR = '\n' 
    )
    
select * from ALUMNO


Y el resultado que se obtiene es:



Como segundo ejemplo, importaremos un archivo csv con cabecera, y valores nulos, para ver la diferencia con el ejemplo anterior. Creamos la tabla RESUMEN_VENTAS.

Descargar el Archivo csv
create table RESUMEN_VENTAS
(year int,
JAN decimal(12, 2),
FEB decimal(12, 2),
MAR decimal(12, 2),
APR decimal(12, 2),
MAY decimal(12, 2),
JUN decimal(12, 2),
JUL decimal(12, 2),
AUG decimal(12, 2),
SEP decimal(12, 2),
OCT decimal(12, 2),
NOV decimal(12, 2),
DEC decimal(12, 2)
 )
 
BULK 
insert  RESUMEN_VENTAS
from 'E:\_ASESORIAS\SQL Importar CSV EXCEL\resumen_ventas_con_null.csv' 
WITH 
    ( 
        FIRSTROW = 2, 
        MAXERRORS = 0, 
        FIELDTERMINATOR = ',', 
        ROWTERMINATOR = '\n'
        --DataFileType ='char' 
        --DataFileType='widechar'
        , KEEPNULLS
    )  

truncate  table RESUMEN_VENTAS
select * from RESUMEN_VENTAS


Se utiliza FIRSTROW = 2 porque la data va a empezar desde la segunda fila, dado que en la primera están las cabeceras. Se considera KEEPNULLS, porque en la primera fila de datos no hay valores para los últimos 4 meses y si no se coloca este parámetro la instrucción lanza error.

Y el resultado que se obtiene es:



Para poder utilizar el asistente de SQL SERVER para Importar un archivo plano, vaya al Explorador de objetos, seleccione una base de datos que usted desee usar para importar datos desde un archivo .csv o .txt, haga clic con el botón derecho y en el menú contextual, elija la opción Importar archivo plano:


Esto hará abrir la página Importar archivo de introducción de archivo plano que le proporcionará una descripción general de las características y muestra qué se debe especificar para importar con éxito todos los datos desde un archivo plano a una base de datos de SQL Server.
Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.



En la siguiente página del asistente para poder Importar un archivo plano es la página Especificar archivo de entrada, especificar como Fuente de Datos (Data Source): Flat File Source (Fuente de Archivos Planos). En esta página, además necesitamos especificar el nombre de la datos de SQL Server.


Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.
En la siguiente pantalla tiene que escoger la ruta del archivo csv o txt en File Name (Nombre del Archivo) y en este caso marcar con check la opción:Nombre de Columna en la primera fila de datos (Column names in the first data row).




En la opción Advanced se muestra los tipos de datos de cada columna, pero hay un botón: Tipos Sugeridos (Suggest Types) que al hacer click en él se establecen de manera automática los tipos adecuados de cada columna. Hacer click en dicho botón.




El resultado obtenido es el siguiente:



En la opción preview, se tiene una vista previa de los datos a importar.
Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.


A continuación se tiene que especificar el tipo de autenticación y las credenciales.
Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.


A continuación se tiene que especificar la tabla destino donde se importarán los datos, por defecto pretende crearse una tabla con el nombre del archivo de texto o csv a importar y con esa estructura.


Queda como se aprecia en la siguiente imagen. Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.


En la siguiente pantalla se muestra el Mapeo de Tipos de Datos de las columnas.
Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.


En la siguiente pantalla se debe hacer check en la opción: Run immediately para ejecutar el proceso de importación.
Luego, tiene que presionar el botón: Siguiente, para poder continuar con la importación de un archivo plano.


La siguiente pantalla indica la configuración seleccionada para la importación.
Luego, tiene que presionar el botón: Finalizar, para poder terminar con la importación de un archivo plano.


La siguiente pantalla muestra el término de la operación y si fue realizada con éxito o error.


Y con esta operación solo resta consultar la tabla a donde se ha importado los datos y verificar que dichos datos se encuentren ahora en dicha tabla.



Posted by InfoTacticas Soluciones  |  No comments

12/10/2019 10:11:00 a. m. Share:

0 comentarios:

Resaltar código (Syntax highlighting) en tu Sitio Web / Blogger

Resaltar Código es una de las necesidades básicas en los sitios web que proporcionan código fuente. Algunos de los Resaltadores de Código que uso son:
  • Syntax Highlighter de Alex Gorbatchev
  • Google Code Prettify

Para Configurar Syntax Highlighter de Alex Gorbatchev en tu Sitio Web / Blogger te dejo los siguientes enlaces:

https://www.mybloggertricks.com/2011/06/change-syntax-highlighter-color-theme.html
https://agratitudesign.blogspot.com/2013/09/styling-script-code-snippets-syntax.html
http://alexgorbatchev.com/SyntaxHighlighter/

Para Configurar Google Code Prettify en tu Sitio Web / Blogger te dejo los siguientes enlaces:
Para Blogger
https://www.technologytobusiness.com/webdesign/google-prettify-highlight-code-syntax
https://medium.com/@Pc_Hub/how-to-add-code-snippets-using-google-code-prettify-a3b1876004cc
Para el Sitio Web
https://w3bits.com/google-code-prettify/
Además aquí se detalla como usarlo
https://www.bloggertipandtrick.net/prettify-syntax-highlighter-for-blogger-blogspot/
Posted by InfoTacticas Soluciones  |  No comments

12/10/2019 08:38:00 a. m. Share:

0 comentarios:

lunes, 9 de diciembre de 2019

OLE DB provider cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.

Quise leer un archivo de access desde el SQL SERVER R2, en un entorno de Windows 10 (64 bits), Microsoft SQL Server 2008R2 , Office 2016 (32 bits) y muestra el mensaje: "OLE DB provider cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode."
El código que he usado en SQL SERVER para configurar el uso de OLEDB.12.0 y leer el archivo es el siguiente:
--
--
use master 
go 
sp_configure 'show advanced options', 1 
reconfigure 
go 
sp_configure 'Ad Hoc Distributed Queries', 1 
reconfigure 
go 
exec sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 
go 
exec sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 
go



SELECT U.USERID, U.BadgeNumber, U.Name 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
 'E:\_InfoTacticas_Blog\Importacion ACCESS\att2000.mdb'; 
 'admin'; '', USERINFO) AS U



Una solución es acceder al siguiente enlace y descargar el MS Access 2010 64 bit driver AccessDatabaseEngine_X64 http://www.microsoft.com/en-US/download/details.aspx?id=13255
Luego se tiene que abrir una consola con derechos de administrador y ubicarse en la carpeta donde está el archivo descargado
Ejecutar el siguiente comando para instalar sin fallos
AccessDatabaseEngine_X64.exe /passive
Posted by InfoTacticas Soluciones  |  No comments

12/09/2019 03:51:00 p. m. Share:

0 comentarios:

Donde buscar si no encuentro el Sql Server Configuration Manager en Windows 10

En Windows 10 se busca de la siguiente manera Panel de Control → Herramientas Administrativas → Administración de Equipos. En Servicios y Aplicaciones se encuentra los servidores de SQL SERVER.


También se puede ejecutar directamente desde el cuadro de diálogo ejecutar (que a su vez puedes invocar con la combinación de teclas Windows + R
En dicho diálogo escribir:
SQLServerManager14.msc para SQL Server 2017
SQLServerManager13.msc para SQL Server 2016
SQLServerManager12.msc para SQL Server 2014
SQLServerManager11.msc para SQL Server 2012
SQLServerManager10.msc para SQL Server 2008

Luego presionar ENTER.

También se encuentra en: C:\Windows\System32

O en C:\Windows\SysWOW64:
Posted by InfoTacticas Soluciones  |  No comments

12/09/2019 07:19:00 a. m. Share:

0 comentarios:

miércoles, 9 de octubre de 2019

Problemas en la configuración del servidor XAMPP por puerto bloqueado

En ocasiones surgen problemas al instalar XAMPP y es que no se pueden iniciar los servicios de Apache o MySQL mostrando un mensaje de puertos bloqueados.
El servidor Apache muchas veces tiene conflicto con la aplicación SKYPE o con el servicio de Reporting Services de SQL SERVER. Y para darle solución hay que cambiar el clásico puerto 80 por otro número de puerto como 8080.
En el siguiente video encontré la solución a estos problemas y está muy bien explicado. Espero les ayude.

https://www.youtube.com/watch?v=GKpmIIH5ifc
apache mysql xampp
Posted by InfoTacticas Soluciones  |  No comments

10/09/2019 10:19:00 a. m. Share:

0 comentarios:

Get updates in your email box
Complete the form below, and we'll send you the best coupons.

Deliver via FeedBurner
back to top