我有一个单一表的MySQL数据库,其中包括一个自动增量ID,一个字符串和两个数字。我想用很多字符串填充这个数据库,来自一个文本文件,所有的数字最初重置为0.如何填充数据库?
有没有办法快速做到这一点?我想创建一个脚本来生成许多INSERT语句,但这似乎有点原始和缓慢。尤其是因为mysql在远程站点上。
我有一个单一表的MySQL数据库,其中包括一个自动增量ID,一个字符串和两个数字。我想用很多字符串填充这个数据库,来自一个文本文件,所有的数字最初重置为0.如何填充数据库?
有没有办法快速做到这一点?我想创建一个脚本来生成许多INSERT语句,但这似乎有点原始和缓慢。尤其是因为mysql在远程站点上。
是 - 使用LOAD DATA INFILE
docs are here例子:
LOAD DATA INFILE 'csvfile'
INTO TABLE table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 0 LINES
(cola, colb, colc)
SET cold = 0,
cole = 0;
通知的set
线 - 在这里你设置的默认值。
根据你的字段分隔符更改线路FIELDS TERMINATED BY ','
谢谢!当我尝试这样做时,我得到:LOAD DATA INFILE'bundles/PACKAGE1.TXT'INTO TABLE textrating FIELDS TERMINATED BY'\ t'LINES TERMINATED BY'\ n'IGNORE 0 LINES(textline); 错误1045(28000):访问拒绝用户名...等 - 我知道我的权限设置,以便我可以添加尽可能多的数据,我想要的。是否需要为LOAD DATA INFILE设置特殊权限?我会注意到secure_file_priv在这里是NULL,并且我试图从本地文件加载数据到远程服务器。 – kloop 2012-03-08 17:18:30
我也会注意到“SHOW GRANTS”表示我拥有所有权限。 – kloop 2012-03-08 17:20:00
在mysql中。用户表确保FILE_PRIV ='Y'为您的用户 – 2012-03-08 17:23:24
其他答案只回答你的一半问题。对于另一半(归零数字列):
或者:
0
,或者:
一旦你在表中的数据,发出MySQL命令为零的领域里,如
UPDATE table SET first_numeric_column_name = 0, second_numeric_column_name = 0 WHERE 1;
并总结了一切,用LOAD DATA INFILE。
您可以请发布您想要导入的文本文件的示例行吗? – rkosegi 2012-03-08 16:54:44