我有一组csv文件要导入到mysql中,并且我在对数据进行排序时犯了一些错误。我需要在不更新整个表的情况下对表中的特定行进行大量更新(对表进行了一些更改,重新导入所有内容将恢复这些更改)。
这是我用来导入csv文件的命令:
LOAD DATA LOW_PRIORITY LOCAL INFILE 'C:\\location\\of\\CSVs\\import.csv'
REPLACE INTO TABLE `database`.`contacts` CHARACTER SET utf8
FIELDS TERMINATED BY ','
OPTIONALLY
我最近从MSSQL转到了MySQL。
我想使用MySQL 5.5存储例程中的表变量(或等效变量)来填充联机报告的数据集。
在MS SQL中,我会这样做
...
...
DECLARE @tblName TABLE
WHILE <condition>
BEGIN
Insert Row based on iteration value
END
...
...
据我所知,我不能在MySQL中声明表变量(如果我错了,请纠正我)如何在MySQL存储过程中实现上述逻辑?
考虑到在连接到ODBC的客户端应用程序中有一长串键,那么在MySql中处理许多行的好方法是什么?
注意:我的经验主要是Server,所以我知道一点,只是不知道具体的MySQL。
任务是从9个表中删除一些行,但我可能有5000对以上的密钥对。
首先,我使用了一种简单的方法,可以循环遍历所有键,并针对每个表为每个键提交一条语句,例如:
DELETE FROM Table WHERE Key1 = 123 AND Key2 = 567 -- and 8 more tables
DELETE FROM Table WHERE Key1 = 124 AND Key2 = 568 -- and 8 mor
我有一个MySQL存储例程,在这里我想使用一个临时数据表来存储中间结果。为了避免创建一个“正常”表,我想使用一个内存中的表,当例程执行完成后,这个表就会消失。我是一个MySQL新手,但我想这是个好办法:
DROP TABLE IF EXISTS MyInMemoryTable;
CREATE TABLE MyInMemoryTable ( numberField int ) ENGINE = MEMORY;
...
DROP TABLE IF EXISTS MyInMemoryTable;
我的例程只适用于一个用户,但是如果多个用户同时运行例程,我会感到紧张吗?
MyInMemoryTable
我在mysql的datadir中找到了一些旧文件:
-rw-rw---- 1 mysql mysql 0 2012-10-09 09:39 #sql_263c_0.MYD
-rw-rw---- 1 mysql mysql 1.0K 2012-10-09 09:39 #sql_263c_0.MYI
-rw-rw---- 1 mysql mysql 0 2012-10-09 09:40 #sql_263c_1.MYD
-rw-rw---- 1 mysql mysql 1.0K 2012-10-09 09:40 #sql_263c_1.MYI
-rw-rw---- 1
嗨,我正在使用临时表,我想知道临时表存储引擎(InnoDB,MyISAM ...)
我使用以下代码来找出答案,但它没有向我显示存储引擎。
$engine="SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND `TABLE_NAME`='temporary_table'";
$export = mysql_query($engine, $connection) or die ("Sql error : ".mysql_error());
我希望能够在Mysql中轻松地调试我的脚本,就像在MSSQL中那样(运行脚本的一部分然后验证表等等),但是临时表不会被保存在服务器上。例如:
CREATE temporary table a(i int);
INSERT INTO a VALUE (1);
SELECT * FROM a;
如果运行整个脚本,它将返回正确的结果,但如果我在insert上按语句运行它,则会得到以下错误:
SQL.sql:错误(2,13):表'test.a‘不存在
我想这是一个服务器配置问题。