我有一个非常大的.csv文件,我用LOAD DATA INFILE命令将它加载到mysql中.因为它花了这么长时间,我想看看上传进展的程度.
到目前为止,我已经尝试了两种方法 - 首先,我只是执行了一个SELECT COUNT(*)命令来查看在上载过程中插入了多少行,但是总是返回0的计数.
其次,我尝试了SHOW PROCESSLIST并查看查询运行了多长时间.有时候状态会说"释放数据"或其他类似的东西.
有没有人知道跟踪LOAD DATA INFILE命令进度的好方法?此外,有谁知道如何跟踪插入率?
谢谢
本文:http://www.linuxask.com/questions/how-to-show-the-warnings-during-mysqlimport
说使用mysqlimport时无法显示警告:
当您使用mysqlimport从文本文件导入数据时,将在导入结束时显示警告数.但是没有办法显示实际的警告信息.
那是准确的吗?我有一个不允许LOAD DATA INFILE的服务器.
我有一堆CSV数据需要加载到MySQL数据库中.好吧,也许是CSV-ish.(编辑:实际上,它看起来像RFC 4180中描述的东西)
每行都是以逗号分隔的双引号字符串列表.要转义出现在列值中的任何双引号,请使用双引号.允许反斜杠代表自己.
例如,行:
"", "\wave\", ""hello,"" said the vicar", "what are ""scare-quotes"" good for?", "I'm reading ""Bossypants"""
Run Code Online (Sandbox Code Playgroud)
如果解析成JSON应该是:
[ "", "\\wave\\", "\"hello,\" said the vicar", "what are \"scare-quotes\" good for?", "I'm reading \"Bossypants\"" ]
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用它LOAD DATA来读取CSV,但我遇到了一些奇怪的行为.
举个例子,考虑一下我是否有一个简单的两列表
shell% mysql exampledb -e "describe person"
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| ID | int(11) | YES | | NULL | |
| UID | char(255) …Run Code Online (Sandbox Code Playgroud) 我用C编写了一个程序来解析大型XML文件,然后使用insert语句创建文件.其他一些进程会将文件摄取到MySQL数据库中.此数据将用作索引服务,以便用户可以轻松找到文档.
我选择了InnoDB来实现行级锁定.C程序将在给定的调用中生成500到500万个插入语句.
将所有这些数据尽快送入数据库的最佳方法是什么?另一件需要注意的是,DB位于单独的服务器上.是否值得将文件移动到该服务器以加快插入?
编辑:此表不会真正更新,但行将被删除.
我使用LOAD DATA INFILE将一些数据导入MySQL数据库.表本身和列使用UTF8字符集,但数据库的默认字符集是latin 1.因为数据库的默认字符类型是latin1,并且我使用了LOAD DATA INFILE而没有指定字符集,所以它被解释文件为latin1,即使文件中的数据是UTF8.现在我的UTF8列中有一堆编码错误的数据.我发现这篇文章似乎解决了类似的问题,即"在cp1251中插入了UTF8",但我的问题是"在UTF8中插入了Latin1".我已经尝试在那里编辑查询以将latin1数据转换为UTF8,但无法使其工作.数据与之前的数据相同,甚至更多.举个例子,Québec这个词显示为Québec.
[附加信息]
选择包含在HEX()中的数据时,Québec的值为5175C383C2A9626563.
此表的Create Table(缩写)是.
CREATE TABLE MyDBName.`MyTableName`
(
`ID` INT NOT NULL AUTO_INCREMENT,
.......
`City` CHAR(32) NULL,
.......
`)) ENGINE InnoDB CHARACTER SET utf8;
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过以下命令将95 GB CSV文件上传到MySQL数据库(MySQL 5.1.36):
CREATE TABLE MOD13Q1 (
rid INT UNSIGNED NOT NULL AUTO_INCREMENT,
gid MEDIUMINT(6) UNSIGNED NOT NULL ,
yr SMALLINT(4) UNSIGNED NOT NULL ,
dyyr SMALLINT(4) UNSIGNED NOT NULL ,
ndvi DECIMAL(7,4) NOT NULL comment 'NA value is 9',
reliability TINYINT(4) NOT NULL comment 'NA value is 9',
ndviquality1 TINYINT(1) NOT NULL ,
ndviquality2 TINYINT(1) NOT NULL ,
primary key (rid),
key(gid)
) ENGINE = MyISAM ;
LOAD DATA INFILE 'datafile.csv' INTO TABLE MOD13Q1 FIELDS …Run Code Online (Sandbox Code Playgroud) 我正在尝试将大约10K行的UTF-8编码数据导入到新的MySQL表中.
我可以LOAD DATA INFILE通过MySQL Workbench 成功完成,但UTF-8字符会被破坏.我已经通过PHP测试了数据库,它接受商店UTF-8字符很好.这个问题似乎与之相关LOAD DATA INFILE,而且我遇到了一些关于此问题的线索.
有没有人知道一种变通方法,或者可能是另一种同样简单的方法来导入CSV数据?
谢谢.
解决:
对于其他看到此问题且具有相同问题的人,只需在运行时添加字符集作为参数即可LOAD DATA INFILE.比我意识到的简单:)
我想使用LOAD DATA INFILEstatement来导入表格中的数据.
如果该文件在同一系统上可用,则它可以正常工作并成功导入,但是当该文件位于另一个系统上时,它无法找到该路径.
任何人都可以解释如何使用该LOAD DATA INFILE语句从另一个系统或远程将数据导入MySQL表?
我想在我的表中插入一个ID列,并从文本文件中获取该表的数据.例如,我的文本文件是这样的:
12 1212 4989 121
121 23 123 110
789 99 234 544
...
Run Code Online (Sandbox Code Playgroud)
它有大约20M行.我想将此数据插入表中,并为其包含一个自动递增的ID值列.我将使用"加载数据infile",但我想创建我的表,如下所示:
id a b c d
--- --- --- --- ---
1 12 1212 4989 121
2 121 23 123 110
3 789 99 234 544
...
Run Code Online (Sandbox Code Playgroud)
如何使用mysql(workbench)创建这种表
我有一个名为dataset1.csv的csv文件,它包含3个变量att1(字符),att2和att3(数字数据)的标题.
我试过以下代码
filename test 'C:\Users\1502911\Desktop\Practice\SAS\Dataset';
data dataset1;
infile test(dataset1.csv) dsd delimiter=',';
input att1 $ att2 att3;
run;
Run Code Online (Sandbox Code Playgroud)

我想要的输出是忽略第一行
load-data-infile ×10
mysql ×9
csv ×3
sql ×2
collation ×1
file-upload ×1
import ×1
indexing ×1
insert ×1
mysqlimport ×1
performance ×1
rfc4180 ×1
sas ×1
utf-8 ×1