2013-08-07 2 views
1

У меня есть .txt-файл размером около 20 МБ. Каждая строка выглядит следующим образом.Преобразование текстового файла в базу данных 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 будет заменен номер автоматического приращения называется идентификатором. И запятые будут там, где начинается новое поле. Как мне это сделать?

+1

phpmyadmin может конвертировать CSV-файл в mysql db – chiliNUT

+0

@SethCohen Есть ли какие-либо примеры или учебные пособия о том, как это сделать с помощью phpmyadmin с csv в этом точном формате? –

+0

dunno about fo ryour точная ситуация, но см. Это s0 http://stackoverflow.com/questions/9734486/importing-a-csv-into-phpmyadmin проверить это, поиграть с phpmyadmin – chiliNUT

ответ

1

Если бы это был я, я бы сделал рубиновый скрипт для преобразования этой вещи в .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");/')

В противном случае, я чувствую себя более комфортно с Ruby:

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 ​​или отправить команды на SQL-сервер непосредственно из сценария Ruby.

+0

Мне нравится ваш ответ, но я не знал, t получить его до тех пор, пока не решит @Seth Cohen;) –

1

Создайте свою таблицу, затем используйте LOAD DATA INFILE в MySQL.

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 open (так что вы должны быть серверами).

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 

дайте мне знать, если у вас есть дополнительные проблемы.

Смежные вопросы