Escribiendo en SQL Server

Guardar datos en un servidor SQL - frente a Excel o algún otro formato - es muy fácil.

Suponga que tiene SQL Server Express instalado localmente. Ha creado una base de datos llamada mydb y una tabla llamada mytable. La tabla tiene dos columnas ColumnA y ColumnB, y ambas son campos de cadenas (varchar). El archivo de base de datos está ubicado en c:\myfiles\mydb.mdf. Esto es muy fácil de configurar en un GUI si descarga la versión de SQL Server Express “con herramientas”. Es gratis!

 1 $cola = "Data to go into ColumnA"
 2 $colb = "Data to go into ColumnB"
 3 
 4 $connection_string = "Server=.\SQLExpress;AttachDbFilenam\
 5 e=C:\Myfiles\mydb.mdf;Database=mydb;Trusted_Connection=Ye\
 6 s;"
 7 $connection = New-Object System.Data.SqlClient.SqlConnect\
 8 ion
 9 $connection.ConnectionString = $connection_string
10 $connection.Open()
11 $command = New-Object System.Data.SqlClient.SqlCommand
12 $command.Connection = $connection
13 
14 $sql = "INSERT INTO MYTABLE (ColumnA,ColumnB) VALUES('$co\
15 la','$colb')"
16 $command.CommandText = $sql
17 $command.ExecuteNonQuery()
18 
19 $connection.close()

Puede insertar una gran cantidad de valores simplemente haciendo un bucle a través de las tres líneas que definen la sentencia SQL y ejecutarla:

 1 $cola = @('Value1','Value2','Value3')
 2 $colb = @('Stuff1','Stuff2','Stuff3')
 3 
 4 $connection_string = "Server=.\SQLExpress;AttachDbFilenam\
 5 e=C:\Myfiles\mydb.mdf;Database=mydb;Trusted_Connection=Ye\
 6 s;"
 7 $connection = New-Object System.Data.SqlClient.SqlConnect\
 8 ion
 9 $connection.ConnectionString = $connection_string
10 $connection.Open()
11 $command = New-Object System.Data.SqlClient.SqlCommand
12 $command.Connection = $connection
13 
14 for ($i=0; $i -lt 3; $i++) {
15   $sql = "INSERT INTO MYTABLE (ColumnA,ColumnB) VALUES('$\
16 ($cola[$i])','$($colb[$i])')"
17   $command.CommandText = $sql
18   $command.ExecuteNonQuery()
19 }
20 
21 $connection.close()

Es igual de fácil ejecutar consultas de actualización o eliminación. Las consultas de selección usan ExecuteReader() en lugar de ExecuteNonQuery() y devuelven un objeto SqlDataReader que se puede utilizar para leer datos de cada columna o avanzar a la siguiente fila en el conjunto de resultados.