Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL Workbench上导入包含逗号和$符号的货币/数字的CSV,而不是文本?_Mysql_Sql_Csv - Fatal编程技术网

如何在MySQL Workbench上导入包含逗号和$符号的货币/数字的CSV,而不是文本?

如何在MySQL Workbench上导入包含逗号和$符号的货币/数字的CSV,而不是文本?,mysql,sql,csv,Mysql,Sql,Csv,我使用“表数据导入向导”选项,右键单击模式以导入CSV文件 但是,我的CSV文件包含货币字符,例如美元符号和逗号(例如$1025.57)。当我导入CSV并将字段类型更改为INT或DOUBLE时,MySQL无法加载数据。我能让它显示的唯一方法是将这些列作为文本导入。显然,我不希望它成为文本。有没有办法让MySQL Workbench将这些字段识别为INT、DOUBLE或数字而不是文本 我希望避免手动打开CSV并手动格式化它,因为它需要更多的工作 这是原始数据副本并粘贴在此处: Brand ta

我使用“表数据导入向导”选项,右键单击模式以导入CSV文件

但是,我的CSV文件包含货币字符,例如美元符号和逗号(例如$1025.57)。当我导入CSV并将字段类型更改为INT或DOUBLE时,MySQL无法加载数据。我能让它显示的唯一方法是将这些列作为文本导入。显然,我不希望它成为文本。有没有办法让MySQL Workbench将这些字段识别为INT、DOUBLE或数字而不是文本

我希望避免手动打开CSV并手动格式化它,因为它需要更多的工作

这是原始数据副本并粘贴在此处:

Brand   tag1    tag2    tagID   taggroup    media_type  date    direct_revenue  total_views total_visitors
Jim's Fish Shop Seafood Bait    JFS12481    Fish Bait   Search  1/1/2016    $1.34   250 15
Jim's Fish Shop Seafood Bait    JFS12482    Fish Bait   Search  1/2/2016    $7.87   1,087   67
Jim's Fish Shop Seafood Bait    JFS12483    Fish Bait   Search  1/3/2016    $0.22   2,582   123
Jim's Fish Shop Seafood Bait    JFS12484    Fish Bait   Search  1/4/2016    $2.01   2,126   122
Jim's Fish Shop Seafood Bait    JFS12485    Fish Bait   Search  1/5/2016    $2.58   3,349   223
原始图片(谁知道是什么样的东西):

您可以在加载数据本地填充的帮助下实现这一点(需要相应地配置服务器和客户端以支持它,另一个选项是将文件放在服务器上以避免本地)。测试示例:

/tmp/test.csv

$1,035.34
$3,506.45

create table t1(amount double);
load data local infile '/tmp/test.csv' into table t1 (@m) 
set amount=replace(replace(@m,'$',''),',','');

select * from t1;
+---------+
| amount  |
+---------+
| 1035.34 |
| 3506.45 |
+---------+

为了导入currency列的数据,我尝试了三种方法

1) 从该列中删除所有小数和货币符号

2) 使用编码cp1250(windows-1250)代替utf-8

3) 尽量保持列名尽可能短。当我的列名为MinimumFaceAmount to AMOUNT时,我遇到了一个错误,它起了作用


有了以上三个功能,我一次就可以导入18k行。希望它对你们有用。

有用吗?编辑:我猜不是。嗯,我如何在评论中添加它?对不起,我是新来的论坛。但这意味着(在我的书中,如果你可以的话)一定要像萨沙那样做。为自定义导入构建这些例程/代码段很酷(相对于缓慢地点击工具。在这种代码策略中,它是自动化的。真正的测试是它如何处理可能相互干扰的一串列。我插入了一张图片…哈哈,对不起,我不知道如何添加表。谢谢你Sasha。我将研究这个函数。我对使用MySQL比较陌生,仍然在学习它。)他进进出出。只需剪切并粘贴文本,我将对其进行格式化。图片几乎没有任何用处。一般来说,在堆栈上非常烦人。因为人们剪切并粘贴您的文本以获得答案。因此,图片就像是浪费时间。当然,我只是将原始数据添加到我的原始帖子中,并包含列标题。显然,我替换了nam有很多东西,但数据基本上就是这样的。