如何在MySQL Workbench上导入包含逗号和$符号的货币/数字的CSV,而不是文本?
我使用“表数据导入向导”选项,右键单击模式以导入CSV文件 但是,我的CSV文件包含货币字符,例如美元符号和逗号(例如$1025.57)。当我导入CSV并将字段类型更改为INT或DOUBLE时,MySQL无法加载数据。我能让它显示的唯一方法是将这些列作为文本导入。显然,我不希望它成为文本。有没有办法让MySQL Workbench将这些字段识别为INT、DOUBLE或数字而不是文本 我希望避免手动打开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
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有很多东西,但数据基本上就是这样的。