将文本文件转换为MySQL数据库

时间:2013-08-07 01:40:43

标签: mysql mysqli

我的.txt文件大小约为20MB。每条线看起来如下。

*,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数据库,其中星号将被替换为名为id的自动增量编号。逗号将是新领域开始的地方。我该怎么做呢?

3 个答案:

答案 0 :(得分:1)

如果是我的话,我会创建一个ruby脚本来在.sql中用INSERT语句列表转换那个东西。唯一的实际问题似乎是星号,它应该成为一个自动键......

因此,首先,您必须在数据库中创建一个表。假设你做了

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

然后,您可以使用某种脚本语言创建.sql。

也许你甚至可以用.sh bash(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

这将输出一个insert语句列表,您可以将其重定向到文件并提供给SQL服务器(您也可以直接从ruby脚本写入文件,或直接从Ruby脚本向SQL Server发送命令)

答案 1 :(得分:1)

创建表,然后在MySQL中使用LOAD DATA INFILE

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

在excel,open office或类似的文件中打开文件,然后用空字段替换所有*个字符。

然后使用:

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

您可以下载MySQL Workbench,它比使用PHPMyAdmin更安全*。 *如果您正在使用SSH进行连接,并且您没有开放MySQL的外部帐户(因此您必须是服务器端)。

答案 2 :(得分: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

如果您有其他问题,请告诉我。