十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
我们先来创建一种表Authors:
专注于为中小企业提供成都网站建设、成都做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业景县免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
CREATE
TABLE
Authors(
AuthID
SMALLINT
NOT
NULL
PRIMARY
KEY,
AuthFN
VARCHAR(20),
AuthMN
VARCHAR(20),
AuthLN
VARCHAR(20)
)
ENGINE=INNODB;
然后向表中一次性插入多条数据,sql插入代码如下:
INSERT
INTO
Authors
VALUES
(1006,
'H',
'S.',
'T'),
(1007,
'J',
'C',
'O'),
(1008,
'B',
NULL,
'E'),
(1009,
'R',
'M',
'R'),
(1010,
'J',
'K',
'T'),
(1011,
'J',
'G.',
'N'),
(1012,
'A',
NULL,
'P'),
(1013,
'A',
NULL,
'W'),
(1014,
'N',
NULL,
'A');
其实与一条一条插入的SQL语句非常类似,只是多条插入语句使用逗号将每条数据分开。
结果如下:
AuthID
AuthFN
AuthMN
AuthLN
1006
H
S.
T
1007
J
C
O
1008
B
E
1009
R
M
R
1010
J
K
T
1011
J
G.
N
1012
A
P
1013
A
W
1014
N
A
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您好.
以前有高人写过类似的:
select id,group_concat(re_id order by re_id separator ",") as re_id
from tablename
group by id
方法2:
select group_concat(list_name) from aa_list
如果还有问题,可以继续追问,感谢。
我以前做过一个mysql的项目,需要设计一个快速上载的机制。最后的解决办法是利用了mysql的预处理语句的特性实现的。mysql的预处理语句支持多行数据的预处理,即 insert into (columnName,columnName,...) values(?,?,...)(?,?,..)...。这样你在绑定输入参数的时候可以在程序里将整张表的数据都绑定好然后调用一次执行就能将整张表的数据插入,比用mysql_query一行一行插入省的几倍的时间。不过你一次发到mysql服务器端的数据多的情况下,要设置my.ini文件下的一个配置项,把服务器允许一次发送的数据包的大小调大就行。
这个需要分情况。
1,你的数据库表中有主键,且主键上面的数据为唯一值。也就是没有重复值。
那么你在删除的时候,将这个唯一值作为条件进行删除。
如:
delete
from
[表名]
where
id=1
2.所有的数据相同,那么你只能打开数据表,手工选定其中某一条,进行删除。
我们先来创建一种表Authors:
CREATE
TABLE
Authors(
AuthID
SMALLINT
NOT
NULL
PRIMARY
KEY,
AuthFN
VARCHAR(20),
AuthMN
VARCHAR(20),
AuthLN
VARCHAR(20)
)
ENGINE=INNODB;
然后向表中一次性插入多条数据,sql插入代码如下:
INSERT
INTO
Authors
VALUES
(1006,
'H',
'S.',
'T'),
(1007,
'J',
'C',
'O'),
(1008,
'B',
NULL,
'E'),
(1009,
'R',
'M',
'R'),
(1010,
'J',
'K',
'T'),
(1011,
'J',
'G.',
'N'),
(1012,
'A',
NULL,
'P'),
(1013,
'A',
NULL,
'W'),
(1014,
'N',
NULL,
'A');
其实与一条一条插入的SQL语句非常类似,只是多条插入语句使用逗号将每条数据分开。
结果如下:
AuthID
AuthFN
AuthMN
AuthLN
1006
H
S.
T
1007
J
C
O
1008
B
E
1009
R
M
R
1010
J
K
T
1011
J
G.
N
1012
A
P
1013
A
W
1014
N
A
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
/// summary
/// 提供数据批量处理的方法。
/// /summary
public interface IBatcherProvider : IProviderService
{
/// summary
/// 将 see cref="DataTable"/ 的数据批量插入到数据库中。
/// /summary
/// param name="dataTable"要批量插入的 see cref="DataTable"/。/param
/// param name="batchSize"每批次写入的数据量。/param
void Insert(DataTable dataTable, int batchSize = 10000);
}
一、SqlServer数据批量插入
SqlServer的批量插入很简单,使用SqlBulkCopy就可以,以下是该类的实现:
/// summary
/// 为 System.Data.SqlClient 提供的用于批量操作的方法。
/// /summary
public sealed class MsSqlBatcher : IBatcherProvider
{
/// summary
/// 获取或设置提供者服务的上下文。
/// /summary
public ServiceContext ServiceContext { get; set; }
/// summary
/// 将 see cref="DataTable"/ 的数据批量插入到数据库中。
/// /summary
/// param name="dataTable"要批量插入的 see cref="DataTable"/。/param
/// param name="batchSize"每批次写入的数据量。/param
public void Insert(DataTable dataTable, int batchSize = 10000)
{
Checker.ArgumentNull(dataTable, "dataTable");
if (dataTable.Rows.Count == 0)
{
return;
}
using (var connection = (SqlConnection)ServiceContext.Database.CreateConnection())
{
try
{
connection.TryOpen();
//给表名加上前后导符
var tableName = DbUtility.FormatByQuote(ServiceContext.Database.Provider.GetServiceISyntaxProvider(), dataTable.TableName);
using (var bulk = new SqlBulkCopy(connection, SqlBulkCopyOptions.KeepIdentity, null)