2013-05-19 47 views
3

我有一個問題。我可以從Linux終端插入到mysql數據庫使用此命令的記錄:從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文件,但我不知道=(

+1

查看MySQL文檔中的'load data local infile' – Kevin

回答

2

執行一系列插入操作並不是性能明智的最佳選擇。由於您輸入的數據爲CSV存在,您會更好做bulk load爲@Kevin建議:

mysql dbTest -e "LOAD DATA INFILE './file' INTO TABLE tablename FIELDS TERMINATED BY ','" 
2

可以使用sed創建一個自定義的SQL文件

在終端執行下面的代碼:

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 
+0

+1的源代碼命令,我忘記了這一點。 – pjmorse

+0

是的,你也可以使用\。而不是'source'命令:) – slackmart

0

使用awk的,你可以使用現有的文件和慶典自身插入值:

awk 'BEGIN {print "mysql -u root -p dbTest << EOF"} {print "insert into tablename values (" $0 ");"} END {print "EOF"}' file |bash -v 
0

的mysql -e「使用數據庫名稱;插入TABLENAME VALUES( 'POST',........); 「

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','[email protected]','Computer Design', '5000.00'); 
    
  8. 看創建的故事:

    select * from employees; 
    

注:使用 「`」 符號像員工ID,名字,姓氏,電子郵件每個字段,部門和工資。

**享受編碼。