我的.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的自动增量编号。逗号将是新领域开始的地方。我该怎么做呢?
答案 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
如果您有其他问题,请告诉我。