PoshCode Archive  Hex Artifact Content

Artifact ecb3d9eba77c025aeb376bfecdaabe18261e3f20b19e5e3d0c9d6e8a45fb836a:

  • File Write-DataTable.ps1 — part of check-in [b1bdbee710] at 2018-06-10 13:32:09 on branch trunk — Writes data only to SQL Server tables. However, the data source is not limited to SQL Server; any data source can be used, as long as the data can be loaded to a DataTable instance or read with a IDataReader instance. (user: Chad Miller size: 3472)

0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 61 73 63 69  # encoding: asci
0010: 69 0d 0a 23 20 61 70 69 3a 20 70 6f 77 65 72 73  i..# api: powers
0020: 68 65 6c 6c 0d 0a 23 20 74 69 74 6c 65 3a 20 57  hell..# title: W
0030: 72 69 74 65 2d 44 61 74 61 54 61 62 6c 65 0d 0a  rite-DataTable..
0040: 23 20 64 65 73 63 72 69 70 74 69 6f 6e 3a 20 57  # description: W
0050: 72 69 74 65 73 20 64 61 74 61 20 6f 6e 6c 79 20  rites data only 
0060: 74 6f 20 53 51 4c 20 53 65 72 76 65 72 20 74 61  to SQL Server ta
0070: 62 6c 65 73 2e 20 48 6f 77 65 76 65 72 2c 20 74  bles. However, t
0080: 68 65 20 64 61 74 61 20 73 6f 75 72 63 65 20 69  he data source i
0090: 73 20 6e 6f 74 20 6c 69 6d 69 74 65 64 20 74 6f  s not limited to
00a0: 20 53 51 4c 20 53 65 72 76 65 72 3b 20 61 6e 79   SQL Server; any
00b0: 20 64 61 74 61 20 73 6f 75 72 63 65 20 63 61 6e   data source can
00c0: 20 62 65 20 75 73 65 64 2c 20 61 73 20 6c 6f 6e   be used, as lon
00d0: 67 20 61 73 20 74 68 65 20 64 61 74 61 20 63 61  g as the data ca
00e0: 6e 20 62 65 20 6c 6f 61 64 65 64 20 74 6f 20 61  n be loaded to a
00f0: 20 44 61 74 61 54 61 62 6c 65 20 69 6e 73 74 61   DataTable insta
0100: 6e 63 65 20 6f 72 20 72 65 61 64 20 77 69 74 68  nce or read with
0110: 20 61 20 49 44 61 74 61 52 65 61 64 65 72 20 69   a IDataReader i
0120: 6e 73 74 61 6e 63 65 2e 0d 0a 23 20 76 65 72 73  nstance...# vers
0130: 69 6f 6e 3a 20 31 2e 30 0d 0a 23 20 74 79 70 65  ion: 1.0..# type
0140: 3a 20 73 63 72 69 70 74 0d 0a 23 20 61 75 74 68  : script..# auth
0150: 6f 72 3a 20 43 68 61 64 20 4d 69 6c 6c 65 72 0d  or: Chad Miller.
0160: 0a 23 20 6c 69 63 65 6e 73 65 3a 20 43 43 30 0d  .# license: CC0.
0170: 0a 23 20 66 75 6e 63 74 69 6f 6e 3a 20 57 72 69  .# function: Wri
0180: 74 65 2d 44 61 74 61 54 61 62 6c 65 0d 0a 23 20  te-DataTable..# 
0190: 78 2d 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20 33  x-poshcode-id: 3
01a0: 38 35 31 0d 0a 23 20 78 2d 61 72 63 68 69 76 65  851..# x-archive
01b0: 64 3a 20 32 30 31 36 2d 30 35 2d 32 31 54 31 33  d: 2016-05-21T13
01c0: 3a 31 34 3a 32 37 0d 0a 23 20 78 2d 70 75 62 6c  :14:27..# x-publ
01d0: 69 73 68 65 64 3a 20 32 30 31 33 2d 31 32 2d 33  ished: 2013-12-3
01e0: 31 54 30 37 3a 31 34 3a 30 30 0d 0a 23 0d 0a 23  1T07:14:00..#..#
01f0: 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ..##############
0200: 23 23 23 23 23 23 23 23 23 0d 0a 3c 23 0d 0a 2e  #########..<#...
0210: 53 59 4e 4f 50 53 49 53 0d 0a 57 72 69 74 65 73  SYNOPSIS..Writes
0220: 20 64 61 74 61 20 6f 6e 6c 79 20 74 6f 20 53 51   data only to SQ
0230: 4c 20 53 65 72 76 65 72 20 74 61 62 6c 65 73 2e  L Server tables.
0240: 0d 0a 2e 44 45 53 43 52 49 50 54 49 4f 4e 0d 0a  ...DESCRIPTION..
0250: 57 72 69 74 65 73 20 64 61 74 61 20 6f 6e 6c 79  Writes data only
0260: 20 74 6f 20 53 51 4c 20 53 65 72 76 65 72 20 74   to SQL Server t
0270: 61 62 6c 65 73 2e 20 48 6f 77 65 76 65 72 2c 20  ables. However, 
0280: 74 68 65 20 64 61 74 61 20 73 6f 75 72 63 65 20  the data source 
0290: 69 73 20 6e 6f 74 20 6c 69 6d 69 74 65 64 20 74  is not limited t
02a0: 6f 20 53 51 4c 20 53 65 72 76 65 72 3b 20 61 6e  o SQL Server; an
02b0: 79 20 64 61 74 61 20 73 6f 75 72 63 65 20 63 61  y data source ca
02c0: 6e 20 62 65 20 75 73 65 64 2c 20 61 73 20 6c 6f  n be used, as lo
02d0: 6e 67 20 61 73 20 74 68 65 20 64 61 74 61 20 63  ng as the data c
02e0: 61 6e 20 62 65 20 6c 6f 61 64 65 64 20 74 6f 20  an be loaded to 
02f0: 61 20 44 61 74 61 54 61 62 6c 65 20 69 6e 73 74  a DataTable inst
0300: 61 6e 63 65 20 6f 72 20 72 65 61 64 20 77 69 74  ance or read wit
0310: 68 20 61 20 49 44 61 74 61 52 65 61 64 65 72 20  h a IDataReader 
0320: 69 6e 73 74 61 6e 63 65 2e 0d 0a 2e 49 4e 50 55  instance....INPU
0330: 54 53 0d 0a 4e 6f 6e 65 0d 0a 20 20 20 20 59 6f  TS..None..    Yo
0340: 75 20 63 61 6e 6e 6f 74 20 70 69 70 65 20 6f 62  u cannot pipe ob
0350: 6a 65 63 74 73 20 74 6f 20 57 72 69 74 65 2d 44  jects to Write-D
0360: 61 74 61 54 61 62 6c 65 0d 0a 2e 4f 55 54 50 55  ataTable...OUTPU
0370: 54 53 0d 0a 4e 6f 6e 65 0d 0a 20 20 20 20 50 72  TS..None..    Pr
0380: 6f 64 75 63 65 73 20 6e 6f 20 6f 75 74 70 75 74  oduces no output
0390: 0d 0a 2e 45 58 41 4d 50 4c 45 0d 0a 24 64 74 20  ...EXAMPLE..$dt 
03a0: 3d 20 49 6e 76 6f 6b 65 2d 53 71 6c 63 6d 64 32  = Invoke-Sqlcmd2
03b0: 20 2d 53 65 72 76 65 72 49 6e 73 74 61 6e 63 65   -ServerInstance
03c0: 20 22 5a 30 30 33 5c 52 32 22 20 2d 44 61 74 61   "Z003\R2" -Data
03d0: 62 61 73 65 20 70 75 62 73 20 22 73 65 6c 65 63  base pubs "selec
03e0: 74 20 2a 20 20 66 72 6f 6d 20 61 75 74 68 6f 72  t *  from author
03f0: 73 22 0d 0a 57 72 69 74 65 2d 44 61 74 61 54 61  s"..Write-DataTa
0400: 62 6c 65 20 2d 53 65 72 76 65 72 49 6e 73 74 61  ble -ServerInsta
0410: 6e 63 65 20 22 5a 30 30 33 5c 52 32 22 20 2d 44  nce "Z003\R2" -D
0420: 61 74 61 62 61 73 65 20 70 75 62 73 63 6f 70 79  atabase pubscopy
0430: 20 2d 54 61 62 6c 65 4e 61 6d 65 20 61 75 74 68   -TableName auth
0440: 6f 72 73 20 2d 44 61 74 61 20 24 64 74 0d 0a 54  ors -Data $dt..T
0450: 68 69 73 20 65 78 61 6d 70 6c 65 20 6c 6f 61 64  his example load
0460: 73 20 61 20 76 61 72 69 61 62 6c 65 20 64 74 20  s a variable dt 
0470: 6f 66 20 74 79 70 65 20 44 61 74 61 54 61 62 6c  of type DataTabl
0480: 65 20 66 72 6f 6d 20 71 75 65 72 79 20 61 6e 64  e from query and
0490: 20 77 72 69 74 65 20 74 68 65 20 64 61 74 61 74   write the datat
04a0: 61 62 6c 65 20 74 6f 20 61 6e 6f 74 68 65 72 20  able to another 
04b0: 64 61 74 61 62 61 73 65 0d 0a 2e 4e 4f 54 45 53  database...NOTES
04c0: 0d 0a 57 72 69 74 65 2d 44 61 74 61 54 61 62 6c  ..Write-DataTabl
04d0: 65 20 75 73 65 73 20 74 68 65 20 53 71 6c 42 75  e uses the SqlBu
04e0: 6c 6b 43 6f 70 79 20 63 6c 61 73 73 20 73 65 65  lkCopy class see
04f0: 20 6c 69 6e 6b 73 20 66 6f 72 20 61 64 64 69 74   links for addit
0500: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
0510: 6e 20 6f 6e 20 74 68 69 73 20 63 6c 61 73 73 2e  n on this class.
0520: 0d 0a 56 65 72 73 69 6f 6e 20 48 69 73 74 6f 72  ..Version Histor
0530: 79 0d 0a 76 31 2e 30 20 20 20 2d 20 43 68 61 64  y..v1.0   - Chad
0540: 20 4d 69 6c 6c 65 72 20 2d 20 49 6e 69 74 69 61   Miller - Initia
0550: 6c 20 72 65 6c 65 61 73 65 0d 0a 76 31 2e 31 20  l release..v1.1 
0560: 20 20 2d 20 43 68 61 64 20 4d 69 6c 6c 65 72 20    - Chad Miller 
0570: 2d 20 46 69 78 65 64 20 65 72 72 6f 72 20 6d 65  - Fixed error me
0580: 73 73 61 67 65 0d 0a 76 31 2e 32 20 20 20 2d 20  ssage..v1.2   - 
0590: 42 2e 20 48 6f 6c 6c 69 67 65 72 20 2d 20 41 64  B. Holliger - Ad
05a0: 64 73 20 63 6f 6c 75 6d 6e 20 6d 61 70 70 69 6e  ds column mappin
05b0: 67 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 73  g according to s
05c0: 6f 75 72 63 65 20 74 61 62 6c 65 2c 20 61 6c 6c  ource table, all
05d0: 6f 77 73 20 69 6e 73 65 72 74 69 6f 6e 20 6f 66  ows insertion of
05e0: 20 64 61 74 61 20 69 66 20 64 65 73 74 69 6e 61   data if destina
05f0: 74 69 6f 6e 20 63 6f 6c 75 6d 6e 20 63 6f 75 6e  tion column coun
0600: 74 20 64 69 66 66 65 72 73 0d 0a 2e 4c 49 4e 4b  t differs...LINK
0610: 0d 0a 68 74 74 70 3a 2f 2f 6d 73 64 6e 2e 6d 69  ..http://msdn.mi
0620: 63 72 6f 73 6f 66 74 2e 63 6f 6d 2f 65 6e 2d 75  crosoft.com/en-u
0630: 73 2f 6c 69 62 72 61 72 79 2f 33 30 63 33 79 35  s/library/30c3y5
0640: 39 37 25 32 38 76 3d 56 53 2e 39 30 25 32 39 2e  97%28v=VS.90%29.
0650: 61 73 70 78 0d 0a 23 3e 0d 0a 66 75 6e 63 74 69  aspx..#>..functi
0660: 6f 6e 20 57 72 69 74 65 2d 44 61 74 61 54 61 62  on Write-DataTab
0670: 6c 65 0d 0a 7b 0d 0a 20 20 20 20 5b 43 6d 64 6c  le..{..    [Cmdl
0680: 65 74 42 69 6e 64 69 6e 67 28 29 5d 0d 0a 20 20  etBinding()]..  
0690: 20 20 70 61 72 61 6d 28 0d 0a 20 20 20 20 5b 50    param(..    [P
06a0: 61 72 61 6d 65 74 65 72 28 50 6f 73 69 74 69 6f  arameter(Positio
06b0: 6e 3d 30 2c 20 4d 61 6e 64 61 74 6f 72 79 3d 24  n=0, Mandatory=$
06c0: 74 72 75 65 29 5d 20 5b 73 74 72 69 6e 67 5d 24  true)] [string]$
06d0: 53 65 72 76 65 72 49 6e 73 74 61 6e 63 65 2c 0d  ServerInstance,.
06e0: 0a 20 20 20 20 5b 50 61 72 61 6d 65 74 65 72 28  .    [Parameter(
06f0: 50 6f 73 69 74 69 6f 6e 3d 31 2c 20 4d 61 6e 64  Position=1, Mand
0700: 61 74 6f 72 79 3d 24 74 72 75 65 29 5d 20 5b 73  atory=$true)] [s
0710: 74 72 69 6e 67 5d 24 44 61 74 61 62 61 73 65 2c  tring]$Database,
0720: 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 74 65 72  ..    [Parameter
0730: 28 50 6f 73 69 74 69 6f 6e 3d 32 2c 20 4d 61 6e  (Position=2, Man
0740: 64 61 74 6f 72 79 3d 24 74 72 75 65 29 5d 20 5b  datory=$true)] [
0750: 73 74 72 69 6e 67 5d 24 54 61 62 6c 65 4e 61 6d  string]$TableNam
0760: 65 2c 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65 74  e,..    [Paramet
0770: 65 72 28 50 6f 73 69 74 69 6f 6e 3d 33 2c 20 4d  er(Position=3, M
0780: 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 29 5d  andatory=$true)]
0790: 20 24 44 61 74 61 2c 0d 0a 20 20 20 20 5b 50 61   $Data,..    [Pa
07a0: 72 61 6d 65 74 65 72 28 50 6f 73 69 74 69 6f 6e  rameter(Position
07b0: 3d 34 2c 20 4d 61 6e 64 61 74 6f 72 79 3d 24 66  =4, Mandatory=$f
07c0: 61 6c 73 65 29 5d 20 5b 73 74 72 69 6e 67 5d 24  alse)] [string]$
07d0: 55 73 65 72 6e 61 6d 65 2c 0d 0a 20 20 20 20 5b  Username,..    [
07e0: 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69 74 69  Parameter(Positi
07f0: 6f 6e 3d 35 2c 20 4d 61 6e 64 61 74 6f 72 79 3d  on=5, Mandatory=
0800: 24 66 61 6c 73 65 29 5d 20 5b 73 74 72 69 6e 67  $false)] [string
0810: 5d 24 50 61 73 73 77 6f 72 64 2c 0d 0a 20 20 20  ]$Password,..   
0820: 20 5b 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69   [Parameter(Posi
0830: 74 69 6f 6e 3d 36 2c 20 4d 61 6e 64 61 74 6f 72  tion=6, Mandator
0840: 79 3d 24 66 61 6c 73 65 29 5d 20 5b 49 6e 74 33  y=$false)] [Int3
0850: 32 5d 24 42 61 74 63 68 53 69 7a 65 3d 35 30 30  2]$BatchSize=500
0860: 30 30 2c 0d 0a 20 20 20 20 5b 50 61 72 61 6d 65  00,..    [Parame
0870: 74 65 72 28 50 6f 73 69 74 69 6f 6e 3d 37 2c 20  ter(Position=7, 
0880: 4d 61 6e 64 61 74 6f 72 79 3d 24 66 61 6c 73 65  Mandatory=$false
0890: 29 5d 20 5b 49 6e 74 33 32 5d 24 51 75 65 72 79  )] [Int32]$Query
08a0: 54 69 6d 65 6f 75 74 3d 30 2c 0d 0a 20 20 20 20  Timeout=0,..    
08b0: 5b 50 61 72 61 6d 65 74 65 72 28 50 6f 73 69 74  [Parameter(Posit
08c0: 69 6f 6e 3d 38 2c 20 4d 61 6e 64 61 74 6f 72 79  ion=8, Mandatory
08d0: 3d 24 66 61 6c 73 65 29 5d 20 5b 49 6e 74 33 32  =$false)] [Int32
08e0: 5d 24 43 6f 6e 6e 65 63 74 69 6f 6e 54 69 6d 65  ]$ConnectionTime
08f0: 6f 75 74 3d 31 35 0d 0a 20 20 20 20 29 0d 0a 20  out=15..    ).. 
0900: 20 20 20 0d 0a 20 20 20 20 24 63 6f 6e 6e 3d 6e     ..    $conn=n
0910: 65 77 2d 6f 62 6a 65 63 74 20 53 79 73 74 65 6d  ew-object System
0920: 2e 44 61 74 61 2e 53 71 6c 43 6c 69 65 6e 74 2e  .Data.SqlClient.
0930: 53 51 4c 43 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 0d  SQLConnection...
0940: 0a 20 20 20 20 69 66 20 28 24 55 73 65 72 6e 61  .    if ($Userna
0950: 6d 65 29 0d 0a 20 20 20 20 7b 20 24 43 6f 6e 6e  me)..    { $Conn
0960: 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 3d 20 22  ectionString = "
0970: 53 65 72 76 65 72 3d 7b 30 7d 3b 44 61 74 61 62  Server={0};Datab
0980: 61 73 65 3d 7b 31 7d 3b 55 73 65 72 20 49 44 3d  ase={1};User ID=
0990: 7b 32 7d 3b 50 61 73 73 77 6f 72 64 3d 7b 33 7d  {2};Password={3}
09a0: 3b 54 72 75 73 74 65 64 5f 43 6f 6e 6e 65 63 74  ;Trusted_Connect
09b0: 69 6f 6e 3d 46 61 6c 73 65 3b 43 6f 6e 6e 65 63  ion=False;Connec
09c0: 74 20 54 69 6d 65 6f 75 74 3d 7b 34 7d 22 20 2d  t Timeout={4}" -
09d0: 66 20 24 53 65 72 76 65 72 49 6e 73 74 61 6e 63  f $ServerInstanc
09e0: 65 2c 24 44 61 74 61 62 61 73 65 2c 24 55 73 65  e,$Database,$Use
09f0: 72 6e 61 6d 65 2c 24 50 61 73 73 77 6f 72 64 2c  rname,$Password,
0a00: 24 43 6f 6e 6e 65 63 74 69 6f 6e 54 69 6d 65 6f  $ConnectionTimeo
0a10: 75 74 20 7d 0d 0a 20 20 20 20 65 6c 73 65 0d 0a  ut }..    else..
0a20: 20 20 20 20 7b 20 24 43 6f 6e 6e 65 63 74 69 6f      { $Connectio
0a30: 6e 53 74 72 69 6e 67 20 3d 20 22 53 65 72 76 65  nString = "Serve
0a40: 72 3d 7b 30 7d 3b 44 61 74 61 62 61 73 65 3d 7b  r={0};Database={
0a50: 31 7d 3b 49 6e 74 65 67 72 61 74 65 64 20 53 65  1};Integrated Se
0a60: 63 75 72 69 74 79 3d 54 72 75 65 3b 43 6f 6e 6e  curity=True;Conn
0a70: 65 63 74 20 54 69 6d 65 6f 75 74 3d 7b 32 7d 22  ect Timeout={2}"
0a80: 20 2d 66 20 24 53 65 72 76 65 72 49 6e 73 74 61   -f $ServerInsta
0a90: 6e 63 65 2c 24 44 61 74 61 62 61 73 65 2c 24 43  nce,$Database,$C
0aa0: 6f 6e 6e 65 63 74 69 6f 6e 54 69 6d 65 6f 75 74  onnectionTimeout
0ab0: 20 7d 0d 0a 0d 0a 20 20 20 20 24 63 6f 6e 6e 2e   }....    $conn.
0ac0: 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67  ConnectionString
0ad0: 3d 24 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69  =$ConnectionStri
0ae0: 6e 67 0d 0a 0d 0a 20 20 20 20 74 72 79 0d 0a 20  ng....    try.. 
0af0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 24 63     {..        $c
0b00: 6f 6e 6e 2e 4f 70 65 6e 28 29 0d 0a 20 20 20 20  onn.Open()..    
0b10: 20 20 20 20 24 62 75 6c 6b 43 6f 70 79 20 3d 20      $bulkCopy = 
0b20: 6e 65 77 2d 6f 62 6a 65 63 74 20 28 22 44 61 74  new-object ("Dat
0b30: 61 2e 53 71 6c 43 6c 69 65 6e 74 2e 53 71 6c 42  a.SqlClient.SqlB
0b40: 75 6c 6b 43 6f 70 79 22 29 20 24 63 6f 6e 6e 65  ulkCopy") $conne
0b50: 63 74 69 6f 6e 53 74 72 69 6e 67 0d 0a 20 20 20  ctionString..   
0b60: 20 20 20 20 20 24 62 75 6c 6b 43 6f 70 79 2e 44       $bulkCopy.D
0b70: 65 73 74 69 6e 61 74 69 6f 6e 54 61 62 6c 65 4e  estinationTableN
0b80: 61 6d 65 20 3d 20 24 74 61 62 6c 65 4e 61 6d 65  ame = $tableName
0b90: 0d 0a 20 20 20 20 20 20 20 20 23 20 53 65 74 20  ..        # Set 
0ba0: 6d 61 70 70 69 6e 67 73 20 61 63 63 6f 72 64 69  mappings accordi
0bb0: 6e 67 20 73 6f 75 72 63 65 20 74 61 62 6c 65 0d  ng source table.
0bc0: 0a 20 20 20 20 20 20 20 20 24 64 61 74 61 20 7c  .        $data |
0bd0: 20 47 65 74 2d 4d 65 6d 62 65 72 20 2d 4d 65 6d   Get-Member -Mem
0be0: 62 65 72 54 79 70 65 20 50 72 6f 70 65 72 74 79  berType Property
0bf0: 20 7c 20 53 65 6c 65 63 74 2d 4f 62 6a 65 63 74   | Select-Object
0c00: 20 2d 45 78 70 61 6e 64 50 72 6f 70 65 72 74 79   -ExpandProperty
0c10: 20 4e 61 6d 65 20 7c 20 46 6f 72 45 61 63 68 2d   Name | ForEach-
0c20: 4f 62 6a 65 63 74 20 7b 0d 0a 20 20 20 20 20 20  Object {..      
0c30: 20 20 20 20 20 20 5b 76 6f 69 64 5d 24 62 75 6c        [void]$bul
0c40: 6b 43 6f 70 79 2e 43 6f 6c 75 6d 6e 4d 61 70 70  kCopy.ColumnMapp
0c50: 69 6e 67 73 2e 41 64 64 28 24 5f 2c 20 24 5f 29  ings.Add($_, $_)
0c60: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
0c70: 20 20 20 20 20 24 62 75 6c 6b 43 6f 70 79 2e 42       $bulkCopy.B
0c80: 61 74 63 68 53 69 7a 65 20 3d 20 24 42 61 74 63  atchSize = $Batc
0c90: 68 53 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 24  hSize..        $
0ca0: 62 75 6c 6b 43 6f 70 79 2e 42 75 6c 6b 43 6f 70  bulkCopy.BulkCop
0cb0: 79 54 69 6d 65 6f 75 74 20 3d 20 24 51 75 65 72  yTimeout = $Quer
0cc0: 79 54 69 6d 65 4f 75 74 0d 0a 20 20 20 20 20 20  yTimeOut..      
0cd0: 20 20 24 62 75 6c 6b 43 6f 70 79 2e 57 72 69 74    $bulkCopy.Writ
0ce0: 65 54 6f 53 65 72 76 65 72 28 24 44 61 74 61 29  eToServer($Data)
0cf0: 0d 0a 20 20 20 20 20 20 20 20 24 63 6f 6e 6e 2e  ..        $conn.
0d00: 43 6c 6f 73 65 28 29 0d 0a 20 20 20 20 7d 0d 0a  Close()..    }..
0d10: 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 7b      catch..    {
0d20: 0d 0a 20 20 20 20 20 20 20 20 24 65 78 20 3d 20  ..        $ex = 
0d30: 24 5f 2e 45 78 63 65 70 74 69 6f 6e 0d 0a 20 20  $_.Exception..  
0d40: 20 20 20 20 20 20 57 72 69 74 65 2d 45 72 72 6f        Write-Erro
0d50: 72 20 22 24 65 78 2e 4d 65 73 73 61 67 65 22 0d  r "$ex.Message".
0d60: 0a 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75  .        continu
0d70: 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 7d 20 23 57  e..    }....} #W
0d80: 72 69 74 65 2d 44 61 74 61 54 61 62 6c 65 0d 0a  rite-DataTable..