关于如何将.sql文件插入已经包含大量数据的MySQL表,我有一个问题?
我的.sql文件看起来像(1200行) :
--
-- Descriptif plan comptable SYSCOHADA (utf-8)
--
INSERT INTO llx_accounting_system (rowid, pcg_version, fk_pays, label, active) VALUES (10,'SYSCOHADA', 49, 'Plan comptable Ouest-Africain', 1);
INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (15000,'SYSCOHADA','CAPITAUX','XXXXXX','1',0,"Capital",'1');
INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (15001,'SYSCOHADA','CAPITAUX','XXXXXX','101',15000,"Capital social",'1');
INSERT INTO llx_accounting_account (rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number, account_parent, label, active) VALUES (15002,'SYSCOHADA','CAPITAUX','XXXXXX','1011',15001,"Capital souscrit, non appele);我的MySQL表看起来像:
mysql> describe llx_accounting_account ;
+----------------+--------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+-------------------+-----------------------------+
| rowid | int(11) | NO | PRI | NULL | auto_increment |
| entity | int(11) | NO | | 1 | |
| datec | datetime | YES | | NULL | |
| tms | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| fk_pcg_version | varchar(32) | NO | MUL | NULL | |
| pcg_type | varchar(20) | NO | | NULL | |
| pcg_subtype | varchar(20) | NO | | NULL | |
| account_number | varchar(32) | NO | MUL | NULL | |
| account_parent | varchar(32) | YES | | NULL | |
| label | varchar(255) | NO | | NULL | |
| fk_user_author | int(11) | YES | | NULL | |
| fk_user_modif | int(11) | YES | | NULL | |
| active | tinyint(4) | NO | | 1 | |
+----------------+--------------+------+-----+-------------------+-----------------------------+
13 rows in set (0.00 sec)我的MySQL表不是空的。已经有数据了,我想在数据表后面添加我的.sql文件。
我没有执行这个命令,因为我认为它是假的:
LOAD DATA LOCAL INFILE 'data_3.9.sql'
INTO TABLE llx_accounting_account
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'你有解决办法吗?
谢谢您:)
解决方案:
通过@RakeshKumar和@PaulF的评论,我找到了解决问题的方法:
1)我删除了fk_pcg_version = 'SYSCOHADA'中的所有行
delete from llx_accounting_account where fk_pcg_version = 'SYSCOHADA' ;2)导入了.sql文件:
mysql -u root -p****** dolibarr < data_3.9.sql3)我修改了一个信息,因为account_number是1而不是10,其中rowid = 15000:
UPDATE llx_accounting_account SET account_number = 10 WHERE rowid=15000 ;看上去不错:)
(谢谢;)
发布于 2016-07-12 08:27:30
使用以下方式导入文件
mysql -u username -p'password' dbname < filename.sql您的导入无法工作,因为您的表中已经有相同的旧SYSCOHADA行。
您可以删除fk_pcg_version = 'SYSCOHADA'中的所有行并再次导入您的文件。
发布于 2018-12-15 23:55:13
我从从mysqldump表输出创建的SQL文件导入数据到file命令时也发生了同样的错误。原因是SQL文件具有DROP (如果存在),并在文件开始时创建TABLE语句。一旦删除了它,它就有效地将行附加到现有的记录中。也许这能帮到别人。
https://stackoverflow.com/questions/38322617
复制相似问题