我有一个来自客户端的非标准化事件日记CSV,我正在尝试将其加载到MySQL表中,以便我可以重构为一种理智的格式.我创建了一个名为"CSVImport"的表,它为CSV文件的每一列都有一个字段.CSV包含99列,因此这本身就是一项非常艰巨的任务:
CREATE TABLE 'CSVImport' (id INT);
ALTER TABLE CSVImport ADD COLUMN Title VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN Company VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN NumTickets VARCHAR(256);
...
ALTER TABLE CSVImport Date49 ADD COLUMN Date49 VARCHAR(256);
ALTER TABLE CSVImport Date50 ADD COLUMN Date50 VARCHAR(256);
Run Code Online (Sandbox Code Playgroud)
表中没有约束,并且所有字段都包含VARCHAR(256)值,但包含计数(由INT表示),是/否(由BIT表示),价格(由DECIMAL表示)和文本blurbs(由TEXT代表).
我试图将数据加载到文件中:
LOAD DATA INFILE '/home/paul/clientdata.csv' INTO TABLE CSVImport;
Query OK, 2023 rows affected, 65535 warnings (0.08 sec)
Records: 2023 Deleted: 0 Skipped: 0 Warnings: 198256
SELECT * FROM CSVImport;
| NULL | NULL | NULL …Run Code Online (Sandbox Code Playgroud) 我有一个文件,可以包含3到4列数字,用逗号分隔.当空字段位于行的末尾时,将定义空字段:
1,2,3,4,5
1,2,3,,5
1,2,3
Run Code Online (Sandbox Code Playgroud)
下表是在MySQL中创建的:
+-------+--------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------+------+-----+---------+-------+ | one | int(1) | YES | | NULL | | | two | int(1) | YES | | NULL | | | three | int(1) | YES | | NULL | | | four | int(1) | YES | | NULL | | | five | int(1) | YES | | NULL | | +-------+--------+------+-----+---------+-------+
我正在尝试使用MySQL LOAD命令加载数据:
LOAD DATA …Run Code Online (Sandbox Code Playgroud) 我一直在PHP中使用MySQL查询,但是当我尝试LOAD DATA INFILE时,我得到以下错误#1045 - Access denied for user 'user'@'localhost' (using password: YES)
有谁知道这意味着什么?
我将一些包含20000行的数据从CSV文件导入到Mysql中.
CSV中的列与MySQL表的列的顺序不同.如何自动分配与Mysql表列对应的列?
当我执行
LOAD DATA INFILE'abc.csv' INTO TABLE abc
Run Code Online (Sandbox Code Playgroud)
此查询将所有数据添加到第一列.
请建议将数据导入Mysql的自动语法.
我已经看了一遍,没有找到任何解决方案,对此的任何帮助都会很棒.
查询:
LOAD DATA INFILE '/Users/name/Desktop/loadIntoDb/loadIntoDB.csv'
INTO TABLE `tba`.`tbl_name`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(
field1, field2, field3
)
Run Code Online (Sandbox Code Playgroud)
错误:
Can't get stat of '/Users/name/Desktop/loadIntoDb/loadIntoDB.csv' (Errcode:2)
Run Code Online (Sandbox Code Playgroud)
注意:
我在OSX 10.6.4上运行连接MySQL 5.x的MySQL Query浏览器
我试过的事情:
我正在尝试将CSV文件加载到我的MySQL数据库中,但我想跳过第一行.
事实上它包含我的列的名称,没有有趣的数据.
这是我正在使用的查询:
LOAD DATA LOCAL INFILE '/myfile.csv'
INTO TABLE tableName
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
(column,column,column);
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一个非常大的.csv文件(~4gb)导入到mysql中.我正在考虑使用phpmyadmin,但是你的最大上传大小为2mb.有人告诉我,我必须使用命令行.
我打算使用这些说明导入它:http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html#c5680
将.csv表中的第一行设置为mysql表中的列名的命令是什么?这个选项可以通过phpmyadmin获得,所以它们也必须是一个mysql命令行版本,对吗?请帮我.谢谢.
-Raj
我有一个包含11列的CSV文件,我有一个包含9列的MySQL表.
CSV文件如下所示:
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11
Run Code Online (Sandbox Code Playgroud)
和MySQL表看起来像:
col1, col2, col3, col4, col5, col6, col7, col8, col9
Run Code Online (Sandbox Code Playgroud)
我需要将CSV文件的1-8列直接映射到MySQL表的前8列.然后,我需要跳过CSV文件中的下两列,然后将CSV文件的第11列映射到MySQL表的第9列.
目前我正在使用以下SQL命令:
LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\n'
Run Code Online (Sandbox Code Playgroud)
但是上面的代码将CSV文件的前9列映射到MySQL表中的9列.
为了将大量数据加载到MySQL中,LOAD DATA INFILE是迄今为止最快的选择.不幸的是,虽然这可以以INSERT IGNORE或REPLACE的方式使用,但目前不支持ON DUPLICATE KEY UPDATE.
但是,ON DUPLICATE KEY UPDATE有优势REPLACE.当存在重复时,后者执行删除和插入.这为密钥管理带来了开销.此外,自动增量ID在替换时不会保持不变.
ON DUPLICATE KEY UPDATE使用LOAD DATA INFILE时如何模拟?