我正在寻找语法定义,例如,示例代码,wiki等,用于从python执行LOAD DATA LOCAL INFILE命令.
我相信如果可以的话,我也可以使用mysqlimport,所以欢迎任何反馈(和代码片段),这是更好的路线.谷歌搜索在当前信息方面没有太多变化
两种情况下的目标都是相同的:自动将具有已知命名约定和日期结构的数百个文件加载到单个MySQL表中.
大卫
我正在尝试使用"LOAD DATA LOCAL INFILE'filename'INTO TABLE'tablename'"将数据文件加载到mysql表中.
问题是源数据文件包含每个字段的数据但缺少主键('id'列).我在创建数据库时添加了一个唯一的id字段,但现在我需要从下一个字段开始将数据导入表中,并在导入时自动增加id字段.
def create_table():
cursor.execute ("""
CREATE TABLE variants
(
id integer(10) auto_increment primary key,
study_no CHAR(40),
other fields.....
)
""")
Run Code Online (Sandbox Code Playgroud)
这是我的LOAD查询
query1= "LOAD DATA LOCAL INFILE '"+currentFile+"' INTO TABLE variants FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n'"
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
简介:创建一个带有附加id字段的表,该表将自动将加载数据(20列)添加到跳过id字段的21个字段的表中,让id字段自动填充自动增量索引.
我有像这样的.csv文件数据
Date,Name,Call Type,Number,Duration,Address,PostalCode,City,State,Country,Latitude,Longitude
"Sep-18-2013 01:53:45 PM","Unknown","outgoing call",'123456',"0 Secs","null","null","null","null","null",0.0,0.0,,,
"Sep-18-2013 01:54:14 PM","Unknown","outgoing call",'1234567890',"0 Secs","null","null","null","null","null",0.0,0.0,,,
"Sep-18-2013 01:54:37 PM","Unknown","outgoing call",'14772580369',"1 Secs","null","null","null","null","null",0.0,0.0,,,
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码将数据插入数据库
$sql = "LOAD DATA INFILE `detection.csv`
INTO TABLE `calldetections`
FIELDS TERMINATED BY '".@mysql_escape_string(",").
"` OPTIONALLY ENCLOSED BY `".@mysql_escape_string("\"").
"` OPTIONALLY ENCLOSED BY `".@mysql_escape_string("\'").
"` ESCAPED BY `".@mysql_escape_string("\\").
"` LINES TERMINATED BY `".",,,\\r\\n".
"`IGNORE 1 LINES `"
."(`date`,`name`,`type`,`number`,`duration`,`addr`,`pin`,`city`,`state`,`country`,`lat`,`log`)";
$res = @mysql_query($con,$sql);
Run Code Online (Sandbox Code Playgroud)
但没有插入; 哪里出错了?
在MySQL我用过LOAD DATA LOCAL INFILE哪个工作正常.最后我得到一条消息:
Records: 460377 Deleted: 0 Skipped: 145280 Warnings: 0
Run Code Online (Sandbox Code Playgroud)
如何查看跳过的记录的行号?SHOW warnings不起作用:
mysql> show warnings;
Empty set (0.00 sec)
Run Code Online (Sandbox Code Playgroud) 是否有任何好的程序来处理读取大型CSV文件?我处理的一些数据文件是1 GB范围.他们有太多的行甚至可以处理Excel.使用Access可能有点慢,因为您必须将它们实际导入数据库才能直接使用它们.是否有程序可以打开大型CSV文件并为您提供简单的电子表格布局,以帮助您轻松快速地扫描数据?
将大型(> 1GB)XML文件转储到MySQL数据库的最快方法是什么?
有问题的数据是StackOverflow知识共享数据转储.
这将用于我正在构建的离线StackOverflow查看器,因为我希望在我无法访问互联网的地方进行一些学习/编码.
我希望在项目完成后将其发布到StackOverflow成员的其余部分以供自己使用.
最初,我一次读取XML /写入DB一条记录.这需要大约10个小时才能在我的机器上运行.我正在使用的hacktastic代码现在将500条记录抛出到一个数组中,然后创建一个插入查询以一次加载所有500条(例如" INSERT INTO posts VALUES (...), (...), (...) ... ;").虽然速度更快,但仍需要数小时才能运行.显然这不是最好的方法,所以我希望这个网站上的大脑会知道更好的方法.
LOAD XML INFILE filename.xml"之类的功能在此项目中不可用,因为此功能仅在MySQL 5.4及更高版本中可用.这种约束很大程度上是因为我希望该项目对我以外的人有用,而且我宁愿不强迫人们使用Beta版本的MySQL.MySql.Data命名空间中的任何内容都是可以接受的.感谢您提供的任何指示!
到目前为止的想法
将整个XML文件加载到列中的存储过程,然后使用XPath对其进行解析
我试图使用"LOAD DATA LOCAL INFILE'filename'INTO TABLE'tablename'"将数据文件加载到mysql表中.
问题是源数据文件包含每个字段的数据但缺少主键('id'列).我必须为每行源数据文件添加一个唯一的id,否则导入将不会通过.
是否有选项可以忽略源文件中的主键或在导入过程中自动增加它?
它已被设置为自动增量主键.
mysql> desc tablename;
+--------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
...
Run Code Online (Sandbox Code Playgroud) 我正在使用MySQL LOAD DATA LOCAL INFILE命令,我收到此错误:
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1148 The used
command is not allowed with this MySQL version: LOAD DATA LOCAL INFILE
'/tmp/phpI0ox54' INTO TABLE `dev_tmp` FIELDS TERMINATED BY ',' ENCLOSED
BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES; Array ( ) in
dc_real_estate_form_submit() (line 147 of /PATH/TO/PHP/SCRIPT).
Run Code Online (Sandbox Code Playgroud)
我们可以更改什么设置以允许LOAD DATA LOCAL infile?
这是我们使用的Drupal 7代码:
$sql = "LOAD DATA LOCAL INFILE '".$file."'
INTO TABLE `dev_tmp`
FIELDS
TERMINATED BY ','
ENCLOSED BY '\"'
LINES
TERMINATED …Run Code Online (Sandbox Code Playgroud) 我有一个非常大的.csv文件,我用LOAD DATA INFILE命令将它加载到mysql中.因为它花了这么长时间,我想看看上传进展的程度.
到目前为止,我已经尝试了两种方法 - 首先,我只是执行了一个SELECT COUNT(*)命令来查看在上载过程中插入了多少行,但是总是返回0的计数.
其次,我尝试了SHOW PROCESSLIST并查看查询运行了多长时间.有时候状态会说"释放数据"或其他类似的东西.
有没有人知道跟踪LOAD DATA INFILE命令进度的好方法?此外,有谁知道如何跟踪插入率?
谢谢
我有一个PHP脚本调用MySQL LOAD DATA INFILE来从CSV文件加载数据.但是,在生产服务器上,我最终得到以下错误:
用户拒绝访问...(使用密码:是)
作为一种快速解决方法,我将命令更改为LOAD DATA LOCAL INFILE有效.但是,使用此消息在客户端的服务器上同样的命令失败:
此MySQL版本不允许使用used命令
我认为这事做与服务器变量:local_infile = off如描述在这里.
请建议不涉及更改服务器设置的解决方法.请注意,安装在同一服务器上的phpMyAdmin实用程序似乎接受CSV文件,但我不确定它是否使用LOAD DATA (LOCAL) INFILE.
load-data-infile ×10
mysql ×9
csv ×4
import ×2
php ×2
python ×2
sql ×2
c# ×1
csv-import ×1
xml ×1