标签: mysqlimport

有没有办法用mysqlimport选项卡选项禁用外键检查?

之前我问过这个问题,我刚回到这个问题.

我有一个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更好,因为每行都在一个单独的行上).

mysql command-line foreign-keys mysqlimport

7
推荐指数
1
解决办法
9810
查看次数

我可以在不先创建数据库表的情况下将制表符分隔的文件导入 MySQL 吗?

正如标题所说:我有一堆包含数据的制表符分隔的文本文件。

我知道如果我使用“CREATE TABLE”语句手动设置所有表,然后我可以使用“加载数据”或“mysqlimport”将它们导入等待表。

但是在 MySQL 中有什么方法可以根据选项卡文件自动创建表吗?好像应该有 (我知道 MySQL 可能必须猜测每列的数据类型,但您可以在选项卡文件的第一行中指定。)

mysql database mysqlimport

6
推荐指数
1
解决办法
6620
查看次数

如何将LARGE sql文件导入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个小时?

php mysql sql apache mysqlimport

6
推荐指数
1
解决办法
3471
查看次数

导入带有html代码的mysql表时出现语法错误

我试图导入一个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)

mysql import mysqlimport

6
推荐指数
1
解决办法
585
查看次数

如何将以空格分隔的文本文件导入MySQL?

我需要将大量(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将解释一个多个空格的序列作为分隔空字段.

有任何想法吗?

mysql mysqlimport load-data-infile

5
推荐指数
1
解决办法
1万
查看次数

在Git Push和Pull上导出和导入数据库

我需要数据库在两台本地计算机之间同步,而不必在两台本地计算机之间使用服务器。经过研究后,我认为我可以使用Git挂钩为我完成任务。

我想基本上是运行mysqldumpgit push(和SQL文件添加到提交)和mysqlimportgit pull,并从远程仓库。

我找不到为此的任何特定挂钩。我尝试了该pre-commit钩子,但这没有在当前提交中添加SQL文件。然后prepare-commit,我尝试了一下,但是没有运气。

有人对此有答案吗?

mysql git mysqldump mysqlimport githooks

5
推荐指数
1
解决办法
4234
查看次数

使用加载数据infile的最小数据库权限

我正在使用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成为可能?

mysql permissions privileges mysqlimport load-data-infile

5
推荐指数
1
解决办法
5604
查看次数

mysqlimport发出"set @@ character_set_database = binary"来阻止加载json值

我已经使用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)

但是徒劳,发生了同样的错误.

那么任何线索如何解决这个字符集问题呢?

mysql mysqlimport load-data-infile mysql-json

5
推荐指数
1
解决办法
2325
查看次数

在AWS RDS上托管的数据库上导入SQL脚本期间,MySql错误'max_allowed_pa​​cket'字节

我在AWS RDS上的MySql数据库上导入SQL文件时遇到问题,在导入SQL文件初始表导入期间突然显示错误.

在此输入图像描述

我知道这个错误,我可以通过增加MySQL配置中的max_allowed_pa​​cket大小来解决这个问题,但不是本地的Mysql是AWS RDS显示我该怎么办?

mysql mysqlimport amazon-web-services amazon-rds max-allowed-packet

4
推荐指数
1
解决办法
3665
查看次数

mysqlimport:错误:1227 访问被拒绝,MySQL 8.0 和 Amazon RDS

我们使用 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 amazon-web-services amazon-rds mysql-8.0

4
推荐指数
1
解决办法
4046
查看次数