none
利用PowerShell批量导入Excel文件中的数据到SQL SERVER RRS feed

  • 常规讨论

  • (how to use PowerShell to import multiple EXCEL files into SQL Server)
    看到很多人问类似的问题,看了很多相关文章,终于搞定了,在这里给大家分享一下:
    假定所有Excel文件都保存在 D:\workfolder\目录下
    要导入数据库的表格为myTableName(COL1,COL2,COL3,COL4,COL5,COL6)
    每个Excel文件中的数据都没有标题,所以HDR=NO
    因为没有标题,所以列名可以用F1、F2、F3……代替,导入的时候顺便做了计算,例如两列的平均(F4+F5)/2
    假设要导入的数据在sheetName工作簿的A22:O1821范围内,所以使用[sheetName$A22:O1821]
    对每个Excel执行Invoke-Sqlcmd命令,对本地服务器使用".",而myTableName表在myDataBase数据库中。
    注意在PowerShell的单引号字符串内,使用了两个单引号的转义字符。
    $files = Get-ChildItem D:\workfolder\*.xls
    ForEach($file in $files) {
    $comm = '
    INSERT INTO myTableName(COL1,COL2,COL3,COL4,COL5,COL6)
    SELECT * 
    FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',''Excel 12.0; Database='+$file+'; HDR=NO; IMEX=1'',
    ''SELECT F1 AS COL1
            ,(F4+F5)/2 AS COL2
            ,(F8+F9)/2 AS COL3
            ,(F10+F11)/2 AS COL4
            ,(F12+F13)/2 AS COL5
            ,(F14+F15)/2 AS COL6
    FROM [sheetName$A22:O1821]'')'
    Invoke-Sqlcmd $comm -ServerInstance "." -Database myDataBase }

    2017年8月2日 6:55