- 毅力与勇气是事业的双飞翼; - 在尝试中成长,在失败中奋起。 - 概览 -> 细读 -> 概览 - 书不在多,在于精。
分类: Mysql/postgreSQL
2014-06-09 10:57:51
批量向mysql插入(文本)数据的方法有以下3种:
方法1.
可以先将要插入的数据统一保存在 .sql 文件中,各个insert 语句直接用分号分开。之后执行命令: source .sql 文件即可。
如,将500条的insert语句用分号分开保存在a.sql 文件中,之后执行source a.sql即可一次性将该500条记录插入数据库表中。
cat word_limit.txt | awk -F"\t" '{print "insert into tbl_sensitive_words_test (Sensitive_Words) values (\""$1"\");"}' > test.sql
alias smsstat='mysql -h10.10.10.10 -usms -p sms'
smsstat < test.sql
方法2.
load data local infile '/home/ill-word/word_limit.txt' into table tbl_sensitive_words_test;
## 该方法导入文本数据,文本内容的格式必须与表结构的字段对应一致。且可在SQL语句后加入 Fields/LINES TERMINATED BY '\r\n'; 指定以 '\r\n'作为行的结尾符,默认的字段分隔符为tab. ## 在某些mysql版本上load data有可能不能使用, 且必须保证文本文件的编码和数据库表的编码一样,否则有可能会乱码。
load data local infile '/path /abc.txt' into table tbl_ill_word; #默认的字段分隔符为tab,可通过在该语句后加 入: fileds terminated by 'abc' 来指定分隔符为abc。也可用: lines terminated by '\r \n' 来指定每行的结束分隔符。
方法3.
head word_limit.txt | awk -F"\t" '{cmd="mysql -A -C -h10.10.209.61 -usms -psms sms_stat -qe \"insert into tbl_sensitive_words_test (Sensitive_Words) values (\""$2"\")\""; system(cmd)}' ### syntax Error???再确定是否可行!
方法4.
还可以通过创建存储过程来实现。
批量导出数据到文本文件中
1.
$ alias smsdb='mysql -h10.10.4.20 -uabc -pabc smsa2P'
$ smsdb -Nqe "select 8 from smsa2p;" > abc.txt
2.
select * from smsa2p into outfile abc.txt fields terminated by"," enclosed by """; ## 将看到每个字段都用","进行了分隔,且每个字段都用"""包括了起来
如何执行一个mysql的sql脚本文件
sql脚本是包含一到多个sql命令的sql语句,我们可以将这些sql脚本放在一个文本文件中(我们称之为“sql脚本文件”),然后通过相关的命令执行这个sql脚本文件。基本步骤如下:
一、创建包含sql命令的sql脚本文件
文件中包含一系列的sql语句,每条语句最后以;结尾,假设文件名为ss.sql,文件内容示例如下(使用“--”进行注释):
--创建表
create table 表名称
(
Guid Varchar(38) not null primary key,
Title Varchar(255),
) TYPE=InnoDB;
--在表A中增加字段Status
alter table A add Status TinyInt default '0';
--在表A上创建索引
create index XX_TaskId_1 on A(Id_);
--在A表中添加一条记录
Insert into A (Id,ParentId, Name) values(1,0,'名称');
--添加、修改、删除数据后,有可能需要提交事务
Commit;