Public/New-AlterSQLTableStatementFromColumn.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
function New-AlterSQLTableStatementFromColumn {
  param([Parameter(Position = 0,ValueFromPipeline)] [System.Data.DataColumn]$dataColumn
    ,[Parameter(Position = 1)] [string]$FQTableName
  )
 

  "ALTER TABLE $FQTableName
 ADD [$($dataColumn.COlumnName)] [varchar](max) NULL;"


  $SQLCreateTable += "
Create table $FQTableName (`n"


  $firstPass = 1
  foreach ($col in $dataColumn) {
    Write-Log "Identifying the data type to use based on the dataTable you passed in" Debug
    switch ($col.DataType.Name)
    {
      "DateTime" {
        $dataType = '[DateTime]'
        break
      }
      "String" {
        $size = if ($col.MaxLength -eq -1 -or $col.MaxLength -eq 2147483647) { 'MAX' } else { $col.MaxLength }
        $dataType = "varchar($size)"

      }
      default {
        Write-Log "Defaulting to varchar(max) datatype" Debug
        $dataType = 'varchar(max)'
        break
      }
    }
    if ($firstPass -eq 1) {
      $SQLCreateTable = $SQLCreateTable + "[$($col.ColumnName)] $dataType null`n"
      $firstPass = 0
    }
    else {
      $SQLCreateTable = $SQLCreateTable + ",[$($col.ColumnName)] $dataType null`n"
    }
  }
  $SQLCreateTable = $SQLCreateTable + "`n);
 
    "

    Write-Log "Generated SQL for $FQTableName" Debug
  Write-Log $SQLCreateTable Debug
  Write-Output $SQLCreateTable
} Export-ModuleMember -Function New-AlterSQLTableStatementFromColumn