bitsCN.com 插入或更新 INSERT INTO pro_realtimeprice_rank (id, id_s, plat,d_m) VALUES (1, 5445, 5454, 5) ON DUPLICATE KEY UPDATE d_m=d_m+5; bitsCN.com
bitsCN.com 今天开发的操作在一个多对多表中需要插入关联记录,实际上一条和多条在我的实现功能上没有差异,可就是多条重复记录看起来别扭,毕竟还是不好,于是琢磨这事情。 之前最naive的想法就是先对将要插入的记录进行一次查询,如果result set大小大于0则表明数据已经存在,不进行数据插入操作,否则insert into……,今天才明白可以一条SQL语句解决问题,利用MySQL的dual表,方法如下: INSERT INTO users_roles (userid,...
bitsCN.com先看个异常 ### Cause: java.sql.SQLException: ORA-00911: 无效字符 ; bad SQL grammar []; nested exception is java.sql.SQLException: ORA-00911: 无效字符 : java.sql.SQLException: ORA-00911: 无效字符 相信你也看到了这是个无效字符错误 问题来源做实验的时候使用的是mysql mapper xml文件的 sql语句是: insert into C_USER (ID,LOGIN_NAME,PASSWORD,EMAIL) values (#{id},#{loginName},#{password},#{ema...
bitsCN.com需要在mysql中插入2000万条记录,用insert语句插入速度很有限,每秒钟几百条,放在hadoop集群上跑也是这个速度,可能是数据库的问题了,网上看到sql server和oracle的insert速度也不是很快。比较简单的优化方法如下: 1、在一条insert语句中插入多条记录 [sql]INSERT INTO tablename (field0, field1, ...) VALUES (value0, value1, ...), (value0, value1, ...), (value0, value1, ...), ... (value0, value1, ......
bitsCN.com 最好的也是用的最多的方法是:将int型空值不允许为空 默认为0.这样就不会出现因为允许为空 插入空值变为0的情况。虽然用起来要判断一下,但却不会出现问题。其它的方法,来自网络,咱未验证如果已经安装好了的,就在my.ini中查找sql-mode,默认为sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",将其修改为sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重启mysql后即可。bits...
bitsCN.com 在数据库由4.2升级到5.1.6-comm...之后 都是latin1的默认编码, 以前的程序插入中文乱码 ,以前的写法:在source中加入charset=gb2312,然后在插入前执行set names gb2312即可; 在网上找了好多文章,除了上面的写法外 ,就是直接更改数据库的设置,但是这个数据库是买的别人的产品 ,不能随便乱动,只好在代码上作文章, 折腾了好久之后 ,得出以下结论与大家共享, latin1即是iso8859-1, 所以在插入之前需要将内容转换为iso...
bitsCN.commysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法一是使用last_insert_id 1mysql> SELECT LAST_INSERT_ID(); 产生的ID 每次连接后保存在服务器中。这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMENT值的。...
bitsCN.com mysql的批量数据格式, 比如 INSERT INTO TABLES (LABLE1,LABLE2,LABLE3,...) VALUES(NUM11,NUM12,NUM13,...), (NUM21,NUM22,NUM23,...), .... (NUMn1,NUMn2,NUMn3,..); 我在前文中叙述的,每个账户的每个采集点就会生成几百个数据,这几百个数据我组合成上述一条语句,20多个账户多个采集点我一共生成上述语句300--800多条,每条的数据项300-500个,所以每次插入的数据共计10000--50000条。 我把每条inse...
bitsCN.com今天遇到Mysql插入数据里有中文字符出现Incorrect string value的错误 背景:CMD里直接敲代码插入数据 提示的部分截取为:ERROR 1366 (HY000): Incorrect string value 百度了一下,说是编码问题,show variables like character% 查看后,发现所有编码都为UTF8,并没有错 继续查原因,网上有人说是mysql的编码集的问题以下为原文: "原来问题出在mysql上,mysql如果设置编码集为utf8那么它最多只能支持到3个字节的UTF-8...
bitsCN.comMySql如何插入和查询二进制数据 mysql二进制 Mysql:bit类型的查询与插入mysql有种字段类型是bit。 1.如何插入呢?它的插入必须采用:可以使用b‘value’符号写位字段值。value是一个用0和1写成的二进制值。mysql> create table an_bit (id bit(8));Query OK, 0 rows affected (0.00 sec)mysql> insert into an_bit values (11);Query OK, 1 row affected (0.00 sec) 虽然可以插入,但是实际插入的数值是11(十进制),不...
bitsCN.comMysql插入中文变为全问号???的问题 1、检查并修改mysql的my.ini的配置文件 [mysql]default-character-set=utf8 2、建立数据库是要指定字符集 create database mydb default character set utf8 collate utf8_general_ci; 3、建立数据表示也要指定字符集: 出问题的命令:CREATE TABLE IF NOT EXISTS `mydb` ( `username` varchar(64) NOT NULL, `userid` int(11) NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=lati...
bitsCN.comMYSQL插入数据时忽略重复数据 当程序中insert时,已存在的数据不插入,不存在的数据insert。在网上搜了下,可以使用存储过程或者是用NOT EXISTS 来判断是否存在。使用下以两种方法时必须把字段设为”主键(PRIMARY KEY”或”唯一约束(UNIQUE)”。 1:使用REPLACE INTO (此种方法是利用替换的方法,有点似类于先删除再插入) REPLACE INTO Syntax REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)] ...
bitsCN.com在my.ini中,MySQL的默认字符集是latin1,我们常用的存储中文的字符集为utf-8(在MySQL写为utf8)以及gbk。所以在需要存储中文的表格中,可以这样定义:在定义表格的最后加上DEFAULT CHARSET的设置语句。亲测成功。此外也可以通过修改my.ini进行全局的默认字符集编码调整。此外,如果使用ibatis,需要进行以下的配置。mysql.driver = com.mysql.jdbc.Drivermysql.url = jdbc:mysql://localhost:3306/ecommsite?useUnicod...
bitsCN.com 使用下以两种方法时必须把字段设为”主键(PRIMARY KEY”或”唯一约束(UNIQUE)”。1:使用REPLACE INTO (此种方法是利用替换的方法,有点似类于先删除再插入) REPLACE INTO Syntax REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},…),(…),… Or: REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name SET col_name={expr | DEFAULT}, …...
bitsCN.com 1、检查并修改mysql的my.ini的配置文件default-character-set=utf82、建立数据库是要指定字符集create database mydb default character set utf8 collate utf8_general_ci;3、建立数据表示也要指定字符集:出问题的命令: CREATE TABLE IF NOT EXISTS `mydb` ( `username` varchar(64) NOT NULL, `userid` int(11) NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 正确的命令: CREATE TABLE IF NOT EXIST...