带有多个字段分隔符的 MySQL 导入 CSV

Kev*_*vin 6 mysql import csv

我正在尝试将此 CSV 文件导入 MySQL,该文件似乎可选地由多个字符括起来。不幸的是,MySQL 只支持一个字符作为字段分隔符。

我被困在 SQL 中完成整个过程,因为它是更大程序的一部分 - 所以脚本是不可能的。

数据示例:

   reportdata, commission, total, chargeback, company
   ",123,""$116.00 "",""$604.00 "",""($88.00)"", foo
Run Code Online (Sandbox Code Playgroud)

除了尝试在临时表上执行一堆字符串操作之外,我感到很困惑。

有任何想法吗?

Rol*_*DBA 3

由于不允许您编写脚本,但只能使用 SQL,请尝试以下操作:

CREATE TABLE importweirddata( txt varchar(255) ) ENGINE=MyISAM;
LOAD DATA LOCAL INFILE 'whatever_importfile.txt'
INTO TABLE importweirddata
LINES TERMINATED BY '\r\n';
UPDATE importweirddata SET txt = REPLACE(txt,'\"\"','\"');
SELECT * FROM importweirddata INTO 'improved_importfile.txt';
DROP TABLE importweirddata;
Run Code Online (Sandbox Code Playgroud)

这就是另一个文本文件,其中双引号已被删除。

如果您希望将所有双引号替换为单引号,请执行以下更新:

CREATE TABLE importweirddata( txt varchar(255) ) ENGINE=MyISAM;
LOAD DATA LOCAL INFILE 'whatever_importfile.txt'
INTO TABLE importweirddata
LINES TERMINATED BY '\r\n';
UPDATE importweirddata SET txt = REPLACE(txt,'\"\"','\'');
SELECT * FROM importweirddata INTO 'improved_importfile.txt';
DROP TABLE importweirddata;
Run Code Online (Sandbox Code Playgroud)

现在,导入该文件 (improved_importfile.txt) 并享受它的乐趣。

试一试 !!!