powershell excel 导入 sqlserver

powershell excel 导入 sqlserver 更新 多表导入,这之前基础上稍加改动。

cls

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection     #聲明一個SqlConnection對象
$SqlConnection.ConnectionString = "Server=192.168.1.1;Database=sa;user=sa;pwd=123"    #指明SqlConnection對象的連接字符串
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand    #聲明一個SqlCommand對象
$SqlCmd.Connection = $SqlConnection
$excelApp = New-Object -COM Excel.Application
$file = (dir D:\express.xlsx).FullName
$book = $excelApp.Workbooks.Open($file)
$sheet = $book.Worksheets.Item(1)

        $SqlCmd.CommandText="
        INSERT INTO [AppData].[dbo].[ExpressCheckHeader]
               ([CheckId]
               ,[UpdateName]
               ,[UpdateTime]
               ,[HeaderStatus]
               ,[ExpressCompany])
         VALUES
               (‘$($sheet.Cells.Item(2,1).Value2)‘
               ,‘$($sheet.Cells.Item(2,2).Value2)‘
               ,‘$($sheet.Cells.Item(2,3).Value2)‘
               ,0
               ,‘$($sheet.Cells.Item(2,4).Value2)‘)"

    try{
        $SqlConnection.Open();
        $intRezult=$SqlCmd.ExecuteNonQuery();
        $SqlConnection.Close();
        $sheet.Cells.Item(2,9).Value2=‘表头导入成功!‘;
        "------------------------------------------------------"
        "表头导入成功!"
        "------------------------------------------------------"
    }
    catch
    {
        "表头保存失败!";
        "------------------------------------------------------"
        return;
    }           

$row = 5
$count=1
while($true)
{
    if(!$sheet.Cells.Item($row,1).Value2)
    {
        break;
    }
      $SqlCmd.CommandText=
      "INSERT INTO [AppData].[dbo].[ExpressCheckLine]
           ([CheckId]
           ,[SendDate]
           ,[ExpressID]
           ,[SendToAddress]
           ,[ExpContent]
           ,[ExpWeight]
           ,[ExpMoney]
           ,[Customer]
           ,[ExpStatus])
     VALUES
           (‘$($sheet.Cells.Item($row,1).Value2)‘
           ,‘$($sheet.Cells.Item($row,2).Value2)‘
           ,‘$($sheet.Cells.Item($row,3).Value2)‘
           ,‘$($sheet.Cells.Item($row,4).Value2)‘
           ,‘$($sheet.Cells.Item($row,5).Value2)‘
           ,$($sheet.Cells.Item($row,6).Value2)
           ,$($sheet.Cells.Item($row,7).Value2)
           ,‘$($sheet.Cells.Item($row,8).Value2)‘
           ,0)"

    try{
        $SqlConnection.Open();
        $intRezult=$SqlCmd.ExecuteNonQuery();
        $SqlConnection.Close();
        $sheet.Cells.Item($row,9).Value2=‘导入成功!‘;
        $count.toString()+‘ 条保存成功,条码号:‘+$($sheet.Cells.Item($row,3).Value2);
    }
    catch
    {
        $count.toString()+‘ 条保存失败,条码号:‘+$($sheet.Cells.Item($row,3).Value2);
    }
    $count++
    $row++
}
"------------------------------------------------------"
"导入操作完成!请查看导入EXCEL文件!"
"------------------------------------------------------"

$book.Save()
$book.Close()
$excelApp.Quit()
$book = $null
$sheet = $null
$excelApp = $null
[GC]::Collect()
时间: 2024-10-09 19:55:52

powershell excel 导入 sqlserver的相关文章

c#中高效的excel导入sqlserver的方法

将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用 bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现.不但速度快,而且代码简单,下面测试代码导入一个6万多条数据的sheet,包括读取(全部读取比较慢)在我的开发环境中只需要10秒左右,而 真正的导入过程只需要4.5秒. using System;using System.Data;using System.Windo

excel 导入 sqlserver 字符串被截取为255长度解决方案

excel表格导入sqlserver数据表中 内容被截取为255长度的字符串. 注意:excel是通过前8行(表头的首行除外)的数据类型来判断导入数据的数据格式的,例如前8行出现整数型,那么默认就用整数型的数据读取方式导入数据,又例如前8行出现的是长度小于255的字符串类型,那么就会默认整列都是小于255的字符串,这样导入的时候长度大于255的字符串就会被截取掉了. 网上的其他解决方案我就不提了,下面演示一下我的方法. 简单易用的解决方案 : 1.插入8行空数据在您将要导入的excel表中. 2

(转)高效的将excel导入sqlserver中

大部分人都知道用oledb来读取数据到dataset,但是读取之后怎么处理dataset就千奇百怪了.很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,System.Data.SqlClient.SqlBulkCopy 对于新手来说还是比较陌生的,这个就是传说中效率极高的bcp,6万多数据从excel导入到sql只需要4.5秒. using System;using System.Data;using System.Windows.Forms;using System.Data.Ole

excel导入sqlserver数据库大数据量,可每秒控制数量

数据库代码 USE [Test] GO /****** Object:  Table [dbo].[Table_1]    Script Date: 11/07/2017 17:27:29 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Table_1]( [id] [varchar](100) NULL, [NodeId] [varchar](

Silverlight将Excel导入到SQLserver数据库

最近纠结于读取Excel模板数据,将数据导入SQLServer的Silverlight实现,本文将实现代码贴出,作为一个简单的例子,方便各位: 1.先设计前台界面新建Silverlight5.0应用程序,出现MainPage.xaml,代码如下所示: <UserControl x:Class="Excel导入SQLServer数据库.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/present

C#Excel上传批量导入sqlserver

前台: <x:FileUpload ID="btnUpField" runat="server" Label="上传Excel批量导入用户信息" ShowLabel="true" > </x:FileUpload> <x:Button ID="Button1" Text="上传" runat="server" Icon="Sys

c#如何实现excel导入到sqlserver,如何实现从sqlserver导出到excel中(详细)

对于从sqlserver中导入.导出excel,虽然sqlserver已经给了较为简单的方式,通过交互式的对话框形式实现,但是有时这种方式存在的很多问题,比方说导入.导出数据不全.而且,对于一个项目而言,我们都不希望功能的实现离开该软件程序.因此,我们便想着用程序来实现sqlserver的导入导出. 一.从sqlserver中导出excel表 我们将查出的数据首先要保存到数据表中DataTable,这里我就不具体说明如何从查出结果,存放到DataTable中了,相信网上有很多实现的例子. 接下拉

C# 获取excel架构并的导入sqlserver的方法

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; using System.Data.SqlClient; using System

Java实现Excel导入数据库,数据库中的数据导入到Excel

实现的功能: Java实现Excel导入数据库,如果存在就更新 数据库中的数据导入到Excel 1.添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的lib目录下­ 2.Excel文件目录:D://book.xls 3.数据库名:javenforexcel 4.表名:stu 5.编写类:连接mysql的字符串方法.插入的方法.实体类­­ 表结构如下 : 连接数据库的工具类 package com.javen.db; import java.sql.Co