1

我有大约 20MB 大小的 .txt 文件。每条线如下所示。

*,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 的自动增量编号。逗号将是一个新字段的开始。我该怎么做呢?

4

3 回答 3

1

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

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

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

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

于 2013-08-07T02:15:01.390 回答
1

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

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

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

然后使用:

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

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

于 2013-08-07T02:37:48.243 回答
1

mysql 本身可以导入 csv 文件

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

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

于 2013-08-07T02:50:46.250 回答