之前我问过这个问题,我刚回到这个问题.
我有一个MySQL数据库的备份脚本,使用
mysqldump
该--tab
选项,因此它.sql
为结构生成一个文件,并.txt
为内容生成一个文件(管道分隔).
链接问题的答案在导入SQL文件(表结构)时有效,但在导入某些表时也会得到外键约束错误(因为该表有自己的外键).这两个命令是这样的:
cat <(echo "SET FOREIGN_KEY_CHECKS=0;") "table.sql" | mysql [user/pass] database
mysqlimport [user/pass] --local --fields-terminated-by="|" database "table.txt"
Run Code Online (Sandbox Code Playgroud)
看起来几年前他们已经在他们的bug跟踪器上请求了这个,但从未实现过.它有什么办法吗?
请注意,我想继续使用tab选项有各种原因(它更快,并且使用git更好,因为每行都在一个单独的行上).
正如标题所说:我有一堆包含数据的制表符分隔的文本文件。
我知道如果我使用“CREATE TABLE”语句手动设置所有表,然后我可以使用“加载数据”或“mysqlimport”将它们导入等待表。
但是在 MySQL 中有什么方法可以根据选项卡文件自动创建表吗?好像应该有 (我知道 MySQL 可能必须猜测每列的数据类型,但您可以在选项卡文件的第一行中指定。)
我有一个PHP脚本解析XML文件并创建一个大型SQL文件,如下所示:
INSERT IGNORE INTO table(field1,field2,field3...)
VALUES ("value1","value2",int1...),
("value1","value2",int1)...etc
Run Code Online (Sandbox Code Playgroud)
这个文件总计超过20GB(我已经在2.5GB文件上测试过,但它也失败了).
我尝试过如下命令:
mysql -u root -p table_name </var/www/bigfile.sql
这适用于较小的文件,比如大约50MB.但它不适用于较大的文件.
我试过了:
mysql> source /var/www/bigfile.sql
Run Code Online (Sandbox Code Playgroud)
我也试过mysqlimport,但是甚至不能正确处理我的文件.
我不断收到错误消息
ERROR 2006 (HY000): MySQL server has gone away
Run Code Online (Sandbox Code Playgroud)
发生约.我开始执行后30秒.
我将allowed_max_packet设置为4GB,但在使用SHOW VARIABLES进行验证时,它只显示1GB.
有没有办法做到这一点而不浪费另外10个小时?
我试图导入一个mysql表,其中包含html代码的数据,它会生成语法错误.有人能告诉我如何用html代码正确导入mysql
Sytanx错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''<ul>\r\n<li>Unpack the equipment and materials</li>\r\n<li>Secure the mounting '
Run Code Online (Sandbox Code Playgroud) 我需要将大量(24MB)文本文件导入MySQL表.每一行看起来像这样:
1 1 0.008 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
每个字段后面有一个或多个空格,最后一个字段在换行符之前被约36个空格.
如何将这样的文件导入MySQL?从文档中可以看出,LOAD DATA期望所有字段都以完全相同的字符串终止.我试过了
LOAD DATA INFILE 'filename' INTO TABLE mytable FIELDS TERMINATED BY ' ';
Run Code Online (Sandbox Code Playgroud)
但MySQL将解释一个多个空格的序列作为分隔空字段.
有任何想法吗?
我需要数据库在两台本地计算机之间同步,而不必在两台本地计算机之间使用服务器。经过研究后,我认为我可以使用Git挂钩为我完成任务。
我想基本上是运行mysqldump
在git push
(和SQL文件添加到提交)和mysqlimport
上git pull
,并从远程仓库。
我找不到为此的任何特定挂钩。我尝试了该pre-commit
钩子,但这没有在当前提交中添加SQL文件。然后prepare-commit
,我尝试了一下,但是没有运气。
有人对此有答案吗?
我正在使用mysqlimport用TSV文件中的值替换表中的数据.一切正常(使用数据库超级用户名和密码导入数据),所以现在我想将其锁定,以便执行导入的数据库用户只能影响我要替换的单个表.
我知道我需要授予FILE .为了使用"LOAD DATA INFILE"(mysqlimport包装),但是我无法找到我可以在数据库上授予的最小权限集.
我试过了;
grant FILE on *.* to ...
grant ALL on dbname.tablename to ....
Run Code Online (Sandbox Code Playgroud)
但是当我运行mysqlimport时,这给了我一个错误;
mysqlimport: Error: Access denied for user ...
Run Code Online (Sandbox Code Playgroud)
有没有人知道是否有可能隔离数据库,以便只有相关的表可以被这个用户改变,或者我是否必须允许他们更广泛的访问才能使mysqlimport成为可能?
我已经使用mysqlimport很长一段时间了,现在因为mysql 5.7添加了json数据类型支持,我正在尝试使用包含json数据的行的mysqlimport.
以下是使用mysqlimport导入的csv文件中的一行示例:
column_A_value,column_B_value,[{"x":20,"y":"some name"}]
Run Code Online (Sandbox Code Playgroud)
请注意,最后一列类型是json.现在使用mysqlimport时如下:
mysqlimport -u user -ppass -h localhost --columns='col_A,col_B,col_C' --local --fields-terminated-by=',' some_db /path/to/products.txt
Run Code Online (Sandbox Code Playgroud)
我收到以下错误: Cannot create a JSON value from a string with CHARACTER SET 'binary'., when using table: products
但是使用生成LOAD DATA IN FILE
而不是mysqlimport工作没有问题!我打开mysql日志并在运行mysqlimport时检查生成的LOAD DATA IN FILE命令,然后复制并粘贴它,它没有问题!我跑了类似的东西:
LOAD DATA LOCAL INFILE '/path/to/products.txt'
INTO TABLE products
Run Code Online (Sandbox Code Playgroud)
它奏效了!唯一的区别是在日志中,当运行mysqlimport时,也生成了这一行
Query /*!40101 set @@character_set_database=binary */
Run Code Online (Sandbox Code Playgroud)
然后生成了LOAD DATA IN FILE命令,因此该行是问题的根源.
所以无论如何我尝试将字符集设置为utf8,
mysqlimport -u user -ppass -h localhost --columns='col_A,col_B,col_C' --local --fields-terminated-by=',' --default-character-set=utf8 some_db /path/to/products.txt
Run Code Online (Sandbox Code Playgroud)
但是徒劳,发生了同样的错误.
那么任何线索如何解决这个字符集问题呢?
我在AWS RDS上的MySql数据库上导入SQL文件时遇到问题,在导入SQL文件初始表导入期间突然显示错误.
我知道这个错误,我可以通过增加MySQL配置中的max_allowed_packet大小来解决这个问题,但不是本地的Mysql是AWS RDS显示我该怎么办?
mysql mysqlimport amazon-web-services amazon-rds max-allowed-packet
我们使用 MySQL 8.0.* 和 .csv 文件将数据导入 Amazon RDS。我们正在从应用服务器命令行执行此命令。
错误:
mysqlimport: Error: 1227 Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation
Run Code Online (Sandbox Code Playgroud)
命令:
mysqlimport --local --compress --columns='col1,col2,col3,col4' -h dbhost -u dbusername -pdbpassword dbname --fields-terminated-by='|' file_path/table_name.csv
Run Code Online (Sandbox Code Playgroud)
我们已经为 DB 用户提供了 DBA 权限。
mysqlimport ×10
mysql ×9
amazon-rds ×2
apache ×1
command-line ×1
database ×1
foreign-keys ×1
git ×1
githooks ×1
import ×1
mysql-8.0 ×1
mysql-json ×1
mysqldump ×1
permissions ×1
php ×1
privileges ×1
sql ×1