3

我有个问题。我可以使用以下命令从 linux 终端向 mysql 数据库中插入一条记录:

mysql dbTest insert into tablename values(1,"b","c")

现在我在 Linux 中有一个文件,其中包含一些记录,例如:

$cat file

2, "c", "e"
3, "r", "q"
4, "t", "w"
5, "y", "e"
6, "u", "r"
7, "g", "u"
8, "f", "j"
9, "v", "k"

我不知道如何将所有记录从 linux 终端插入到 mysql 数据库的文件中。

我打算使用 bash 文件,但我不知道 =(

4

5 回答 5

2

Doing a series of inserts is not the best choice performance-wise. Since your input data exist as CSV you'd be better off doing a bulk load as @Kevin suggested:

mysql dbTest -e "LOAD DATA INFILE './file' INTO TABLE tablename FIELDS TERMINATED BY ','"
于 2013-05-19T10:02:23.300 回答
2

您可以使用sed.

从终端执行以下代码:

sed 's/\(^[0-9]*, [a-z]*, [a-z]*$\)/INSERT INTO tablename VALUES(\1);/g' source_file > sql_script.sql

之后就可以方便地使用source命令插入记录了。

$ mysql -u mysqlusername -p -h host
Enter password: your_secret_password

Mysql > use yourdatabasename
Mysql > source sql_script.sql
于 2013-05-19T02:19:46.727 回答
0

使用 awk 您可以使用现有文件并从 bash 本身插入值:

awk 'BEGIN {print "mysql -u root -p dbTest << EOF"} {print "insert into tablename values (" $0 ");"} END {print "EOF"}' file |bash -v
于 2013-05-19T02:23:02.957 回答
0

mysql -e "使用数据库名;插入 TABLENAME 值 ('POST',........);"

于 2013-05-19T02:35:30.197 回答
0
  1. 安装 Mysql:

    sudo apt-get install mysql-server
    
  2. 转到 Mysql 外壳:

    mysql -u root -p 
           password:****** 
    
  3. 显示数据库(如果已经存在):

    show databases; 
    
  4. 创建数据库:

    create database employees;
    
  5. 访问创建的数据库:

    use employees;</code>
    
  6. 创建一个表(注意" : use acute每个字段中的“``”和“符号):

    create table `employees`( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(64) DEFAULT NULL,`last_name` varchar(64) DEFAULT NULL, `email` varchar(64) DEFAULT NULL, `department` varchar(64) DEFAULT NULL, `salary` DECIMAL(10,2) DEFAULT NULL, PRIMARY KEY(`id`)) 
    ENGINE = InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET = latin1;
    
  7. 向表中添加信息:

    INSERT INTO `employees` (`id`,`first_name`,`last_name`,`email`,`department`,`salary`) 
    VALUES (1, 'Sumanta','Silwal','sumantasilwal10@gmail.com','Computer Design', '5000.00'); 
    
  8. 看看创造的故事:

    select * from employees;
    

注意:在员工、id、名字、姓氏、电子邮件、部门和工资等每个字段中使用“`”符号。

**享受编码。

于 2017-05-17T10:02:05.327 回答