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.