2013-08-07 55 views
1

我有大約20MB大小的.txt文件。每條線如下所示。將文本文件轉換爲MySQL數據庫

*,00000000,Binary Zero,Description 
*,00000001,Binary One,Description 
*,00000010,Binary Two,Description 
*,00000011,Binary Three,Description 
*,00000100,Binary Four,Description 
*,00000101,Binary Five,Description 
*,00000110,Binary Six,Description 
*,00000111,Binary Seven,Description 
*,00001000,Binary Eight,Description 
*,00001001,Binary Nine,Description 
*,00001010,Binary Ten,Description 

我想要做的就是將其轉換爲mysql數據庫,其中astericks將一個稱爲id的自動遞增號碼代替。逗號將成爲新領域開始的地方。我如何去做這件事?

+1

phpmyadmin可以將csv文件轉換爲mysql db – chiliNUT

+0

@SethCohen有關於如何使用具有csv的phpmyadmin以該確切格式執行此操作的任何示例或教程? –

+0

不知道你的確切情況,但看到這個s0 http://stackoverflow.com/questions/9734486/importing-a-csv-into-phpmyadmin檢查出來,玩弄phpmyadmin – chiliNUT

回答

1

如果它是我,我會做一個ruby腳本來將.sql中的那個東西與一個INSERT語句列表進行轉換。唯一的實際問題似乎是星號,它應該成爲一個自動密鑰...

因此,首先,您必須在數據庫中創建一個表。假設你做

CREATE TABLE MyTable(
    ID INTEGER AUTO_INCREMENT PRIMARY KEY, 
    Binary CHAR(whatever) 
    Name VARCHAR(whatever), 
    Description VARCHAR(whatever) 
) 

然後,你可以用一些腳本語言來製作一個.sql。

也許你甚至可以是帶有.sh慶典(sed -i -E 's/^\*,([^,]+),([^,]+),(.+)$/INSERT INTO MyTable (Binary, Name, Description) VALUES ("\1", "\2", "\3");/'

否則這樣做,我感覺更舒服紅寶石:

require 'csv' 
CSV.foreach("your_file.txt") do |row| 
    puts <<EOS 
INSERT INTO MyTable (Binary, Name, Description) VALUES ("#{row[1]}", "#{row[2]}", "#{row[3]}"); 
EOS 
end 

這將輸出插入語句列表,你可以重定向到一個文件並饋送到SQL服務器(你也可以直接從ruby腳本寫入文件,或者直接從Ruby腳本發送命令到SQL服務器)

+0

我愛你的答案,但我didn'直到做完@科思回憶起來的東西才能得到它;) –

1

創建你的表,然後在MySQL中使用LOAD DATA INFILE

CREATE TABLE MyTable(
    ID INTEGER AUTO_INCREMENT PRIMARY KEY, 
    binary VARCHAR(8), 
    name VARCHAR(45), 
    description TINYTXT 
) 

在Excel中打開文件,開放式辦公,或類似的東西,然後用空字段替換所有*字符。

然後使用:

LOAD DATA INFILE 'data.csv' INTO TABLE db2.my_table; 

您可以下載MySQL Workbench,這是一個很多* *安全比使用phpMyAdmin。 *假設您正在使用SSH進行連接,並且您沒有開放MySQL的外部帳戶(因此您必須在服務器端)。

1

的MySQL本身可以import csv files

mysqlimport --fields-optionally-enclosed-by=""" --fields-terminated-by=, --lines-terminated-by="\r\n" --user=YOUR_USERNAME --password YOUR_DATABASE YOUR_TABLE.csv 

不要讓我知道,如果你有進一步的問題。

相關問題