当前位置:首页 » 编程语言 » c批量sql

c批量sql

发布时间: 2023-03-03 11:32:43

1. sql 批量修改数据

使用update 更新修改数据库数据,更改的结果集是多条数据则为批量修改。
语法格式如:
update 表格 set 列 = 更改值 where 筛选条件
例:
update table set a=1 --将table 中所以a列的值改为 1
update table set a=1 where b=2 --将table 中列b=2的记录中a列的值改为 1

2. C#中如何将Excel中的数据批量导入到sql server

1.本文实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。不但速度快,而且代码简单,下面测试代码导入一个6万多条数据的sheet,包括读取(全部读取比较慢)在我的开发环境中只需要10秒左右,而真正的导入过程只需要4.5秒。x0dx0a2.代码如下:x0dx0ausing System; x0dx0ausing System.Data; x0dx0ausing System.Windows.Forms; x0dx0ausing System.Data.OleDb; x0dx0anamespace WindowsApplication2 x0dx0a{ x0dx0a public partial class Form1 : Form x0dx0a { x0dx0a public Form1() x0dx0a { x0dx0a InitializeComponent(); x0dx0a } x0dx0ax0dx0a private void button1_Click(object sender, EventArgs e) x0dx0a { x0dx0a //测试,将excel中的sheet1导入到sqlserver中 x0dx0a string connString = "server=localhost;uid=sa;pwd=sqlgis;database=master"; x0dx0a System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog(); x0dx0a if (fd.ShowDialog() == DialogResult.OK) x0dx0a { x0dx0a TransferData(fd.FileName, "sheet1", connString); x0dx0a } x0dx0a } x0dx0ax0dx0a public void TransferData(string excelFile, string sheetName, string connectionString) x0dx0a { x0dx0a DataSet ds = new DataSet(); x0dx0a tryx0dx0a { x0dx0a //获取全部数据 x0dx0a string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;"; x0dx0a OleDbConnection conn = new OleDbConnection(strConn); x0dx0a conn.Open(); x0dx0a string strExcel = ""; x0dx0a OleDbDataAdapter myCommand = null; x0dx0a strExcel = string.Format("select * from [{0}$]", sheetName); x0dx0a myCommand = new OleDbDataAdapter(strExcel, strConn); x0dx0a myCommand.Fill(ds, sheetName); x0dx0ax0dx0a //如果目标表不存在则创建 x0dx0a string strSql = string.Format("if object_id('{0}') is null create table {0}(", sheetName); x0dx0a foreach (System.Data.DataColumn c in ds.Tables[0].Columns) x0dx0a { x0dx0a strSql += string.Format("[{0}] varchar(255),", c.ColumnName); x0dx0a } x0dx0a strSql = strSql.Trim(',') + ")"; x0dx0ax0dx0a using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection(connectionString)) x0dx0a { x0dx0a sqlconn.Open(); x0dx0a System.Data.SqlClient.SqlCommand command = sqlconn.CreateCommand(); x0dx0a command.CommandText = strSql; x0dx0a command.ExecuteNonQuery(); x0dx0a sqlconn.Close(); x0dx0a } x0dx0a //用bcp导入数据 x0dx0a using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString)) x0dx0a { x0dx0a bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied); x0dx0a bcp.BatchSize = 100;//每次传输的行数 x0dx0a bcp.NotifyAfter = 100;//进度提示的行数 x0dx0a bcp.DestinationTableName = sheetName;//目标表 x0dx0a bcp.WriteToServer(ds.Tables[0]); x0dx0a } x0dx0a } x0dx0a catch (Exception ex) x0dx0a { x0dx0a System.Windows.Forms.MessageBox.Show(ex.Message); x0dx0a }x0dx0a } x0dx0ax0dx0a //进度显示 x0dx0a void bcp_SqlRowsCopied(object sender, System.Data.SqlClient.SqlRowsCopiedEventArgs e) x0dx0a { x0dx0a this.Text = e.RowsCopied.ToString(); x0dx0a this.Update(); x0dx0a }x0dx0a } x0dx0a} x0dx0a3.上面的TransferData基本可以直接使用,如果要考虑周全的话,可以用oledb来获取excel的表结构,并且加入ColumnMappings来设置对照字段,这样效果就完全可以做到和sqlserver的dts相同的效果了。

3. SQL批量插入数据

一、针对批量插入数据,如果量不是太多,可以多条SQL语句运行就可以了,

类似下面的语句,当然可以使用excel 编辑后,复制到查询器中运行,

insert into table(a,b) values('1','a')

insert into table(a,b) values('2','b')

insert into table(a,b) values('3','c')


二、大量数批量插入,即数据表的移植,数据备份转换之类的,就需要工具,比如MSSQL的DTS工具,pb的数据通道 等等。这里介绍一下 DTS工具。

4. sql 语句 批量修改

update 表名
set C_METHOD_NAME= lower(substring(REPLACE(C_METHOD_NAME,'process',''),1,1))+
substring(REPLACE(C_METHOD_NAME,'process',''),2,len(REPLACE(C_METHOD_NAME,'process','')))
--REPLACE(C_METHOD_NAME,'process','')用空值取代process
-- lower改小写
--lower(substring(REPLACE(C_METHOD_NAME,'process',''),1,1))把取代后字符串的第一个字母改小写
--再加上后面的字符串

5. sql在update更新时如何快速且大批量的更新数据(C#中写的)

这不是才1000个数据吗, 循环起来不会很慢, 而且也用不上case when啊亲
SQL:
UPDATE tableA
SET colB=@colB, colC=@colC
WHERE colA=@colA

循环
for(var i=0; i<1000; i++)
{
colA.Value=A[i]; colB.Value=B[i]; colC.Value=C[i];

cmd.ExecuteNonQuery();

}

6. 如何在sql server 2008中 批量地更新数据,就是一次性更新多个字段的同一行数据

你好!你写的“”update ['+@tablename+'] set ('+@updatesp+')=(select ('+@Csql+')) where 学号='''+@sno+''''”,就好比是set a,b,c,d,e=(f,g,h,i,j),这样肯定不能建立对应关系。我提供个思路给你:将传进来的列名分开,用循环去更新,一次只更新一列。希望能帮到你~

7. 我有一堆sql文件需要运行 如何批量运行

可以使用批处理,调用 isql 执行 .sql文件。

1、 新建test.sql 文件。如图,代码执行删除 表a中id='1'的记录。

3、运行批处理test.bat即可执行,test.sql中的SQL语句。

热点内容
mobisage文件夹 发布:2024-11-07 09:29:16 浏览:876
车载安卓机怎么清理垃圾 发布:2024-11-07 09:12:51 浏览:450
外网访问vmware 发布:2024-11-07 08:51:03 浏览:952
安卓和苹果怎么快传 发布:2024-11-07 08:50:44 浏览:636
安卓和鸿蒙哪个系统更省空间 发布:2024-11-07 08:39:30 浏览:482
解压精子 发布:2024-11-07 08:37:56 浏览:256
android搭建服务器端 发布:2024-11-07 08:33:31 浏览:784
什么软件缓存视频快 发布:2024-11-07 08:29:19 浏览:849
参数访问键 发布:2024-11-07 08:08:43 浏览:138
ftp服务器搭建教程win10 发布:2024-11-07 08:06:20 浏览:260