c数据库批量更新数据库
更改拥有者:
usage()
{
cat << EOF
usage: $0 options
This script set ownership for all table, sequence and views for a given database
Credit: Based on http://stackoverflow.com/a/2686185/305019 by Alex Soto
Also merged changes from @sharoonthomas
OPTIONS:
-h Show this message
-d Database name
-o Owner
EOF
}
DB_NAME=
NEW_OWNER=
PGSQL_USER=postgres
while getopts "hd:o:" OPTION
do
case $OPTION in
h)
usage
exit 1
;;
d)
DB_NAME=$OPTARG
;;
o)
NEW_OWNER=$OPTARG
;;
esac
done
if [[ -z $DB_NAME ]] || [[ -z $NEW_OWNER ]]
then
usage
exit 1
fi
for tbl in `psql -U $PGSQL_USER -qAt -c "select tablename from pg_tables where schemaname = 'public';" ${DB_NAME}` \
`psql -U $PGSQL_USER -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';" ${DB_NAME}` \
`psql -U $PGSQL_USER -qAt -c "select table_name from information_schema.views where table_schema = 'public';" ${DB_NAME}` ;
do
psql -U $PGSQL_USER -c "alter table \"$tbl\" owner to ${NEW_OWNER}" ${DB_NAME} ;
done
❷ 如何在sql server 2008中 批量地更新数据,就是一次性更新多个字段的同一行数据
你好!你写的“”update ['+@tablename+'] set ('+@updatesp+')=(select ('+@Csql+')) where 学号='''+@sno+''''”,就好比是set a,b,c,d,e=(f,g,h,i,j),这样肯定不能建立对应关系。我提供个思路给你:将传进来的列名分开,用循环去更新,一次只更新一列。希望能帮到你~
❸ C#winform三层架构中如何实现将gridcontrol批量插入数据到数据库
//将dgvStudent数据操作更新到数据库
private Boolean dbUpdate()
{
string strSql = "select ID as 学号,name as 姓名, class as 班级 from tbl_Student";
//新建一个用于将dgvStudent数据操作更新到数据库的内存表
DataTable dtUpdate= new DataTable();
//新建一个用于更新dgvStudent数据操作的内存表
//利用da初始化dtUpdate的表结构(和数据)
SqlDataAdapter da = new SqlDataAdapter(strSql, sqlCon);
da.Fill(dtUpdate);
//初始化的数据需清除,以存放更新后的dgvStudent数据
dtUpdate.Rows.Clear();
//再建一个内存表,用于将更新后的dgvStudent数据逐条读取出来存入更新内存表中
DataTable dtShow = new DataTable();
//逐条读取出来存入更新内存表中
dtShow = (DataTable) dgvStudent.DataSource;
for (int i = 0; i < dtShow.Rows.Count; i++)
{
dtUpdate.ImportRow(dtShow.Rows[i]);
}
try
{
this.sqlCon.Open();
//使对DataSet所做的更改与关联的SQL Server数据库相协调
SqlCommandBuilder sqlCbld;
sqlCbld = new SqlCommandBuilder(da);
//通过该da将更新后的dgvStudent数据(即已复制的dtUpdate)更新到数据库
da.Update(dtUpdate);
sqlCon.Close();
}
catch(Exception ex)
{
MessageBox.Show("数据库操作失败:" + ex.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}
dtUpdate.AcceptChanges();
return true;
}
❹ 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
❺ 如何批量更新access数据库
更新查询,查询语句:
update 表1 set 表1.a=表2.a,表1.b=表2.b,表1.d=表2.d
from 表1,表2 where 表1.c=表2.c
祝你成功!
❻ 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();
}
❼ 有关数据库更新
最好写个存储过程,因为是批量更新,所以存储过程参数用XML格式的。
存储过程里面逻辑这样:
insert table(字段)
SELECT 字段
FROM OPENXML (@handle, '/ArrayOfT_ZZ_EquipmentPointEntities2/T_ZZ_EquipmentPointEntities2',2)
WITH (
字段
)
where 字段 not in (select 字段 from table)
update table set 字段=''
where 字段 in SELECT 字段
FROM OPENXML (@handle, '/ArrayOfT_ZZ_EquipmentPointEntities2/T_ZZ_EquipmentPointEntities2',2)
WITH (
字段
)
❽ C#.net里如何实现数据批量传入SQL数据库
用bulkinsert导入一个文件夹下的所有指定条件的文件
(实现批量上传)
在某个文件夹下有很多文件,要将该文件夹下的
snd*.txt
文件,插入
snd_info
表
rcv*.txt
文件,插入
rcv_info
表
其他
.txt
文件和其他类型的文件不处理
--示例处理过程
--处理参数
declare
@path
nvarchar(266)
set
@path='c:\'
--要导入的文件所在的目录
--导入处理
--得到该目录下的所有文件
if
right(@path,1)<>'\'
set
@path=@path+'\'
create
table
#t(fn
nvarchar(1000),depth
int,isfile
int)
insert
#t
exec
master..xp_dirtree
@path=@path,@depth=1,@file=1
--定义游标,逐个导入文件
declare
@s
varchar(8000)
declare
tb
cursor
local
for
select
'bulk
insert
'
+case
when
fn
like
'snd%.txt'
then
'snd_info
from
'''+@path+fn
+'''
with
(formatfile='''+@path+'snd_bcp.txt'
else
'rcv_info
from
'''+@path+fn
+'''
with
(formatfile='''+@path+'rcv_bcp.txt'
end+''')'
from
#t
where
isfile=1
and
fn
not
in('snd_bcp.txt','rcv_bcp.txt')
and
(fn
like
'snd%.txt'
or
fn
like
'rcv%.txt')
open
tb
fetch
tb
into
@s
while
@@fetch_status=0
begin
exec(@s)
fetch
tb
into
@s
end
close
tb
deallocate
tb
drop
table
#t
❾ 批量更新数据库中一个字段的值(在字段值前加字符串"00")
实现语句改成: Update [member] Set card='00' || card
PostgreSQL 8.1 中文文档:http://www.pgsqldb.org/pgsqldoc-8.1c/
❿ sql在update更新时如何快速且大批量的更新数据
使用merge语句吧
语法:
MERGE INTO 目标表 AS A
USING 源表 AS B
ON (A.COL = B.COL) --匹配条件
WHEN MATCHED THEN --当匹配上就用B表的字段更新A表的字段
UPDATE SET
A.COL1 = B.COL1,
...
A.COLn = B.COLn
WHEN NOT MATCHED THEN INSERT(A.COL1,...,A.COLn) --下面这句是不匹配就插入数据
VALUES (B.COL1,...,B.COLn);