将空格作为NULL插入MySQL

将空格作为NULL插入MySQL,mysql,amazon-web-services,amazon-data-pipeline,Mysql,Amazon Web Services,Amazon Data Pipeline,我正在构建一个AWS管道,将CSV文件从S3插入RDS MySQL数据库。我面临的问题是,当它试图加载文件时,它将空格视为空字符串,而不是空字符串。例如,CSV的第1行是: "3","John","Doe","" 其中,值是MySQL表中的整数,管道中的错误当然是: Incorrect integer value: '' for column 'col4' at row 1 我正在研究jdbc MySQL参数以修改连接字符串: jdbc:mysql://my-rds-endpoint:330

我正在构建一个AWS管道,将CSV文件从S3插入RDS MySQL数据库。我面临的问题是,当它试图加载文件时,它将空格视为空字符串,而不是空字符串。例如,CSV的第1行是:

"3","John","Doe",""
其中,值是MySQL表中的整数,管道中的错误当然是:

Incorrect integer value: '' for column 'col4' at row 1
我正在研究jdbc MySQL参数以修改连接字符串:

jdbc:mysql://my-rds-endpoint:3306/my_db_name?jdbcCompliantTruncation=false

JDBCCompliantRuncationis只是一个例子,这些参数中是否有任何参数可以帮助我将这些空白作为空值插入

谢谢

编辑: 在一点上下文中,csv文件是从红移中卸载的,所以当我将它们放入S3时,空格最初是空的

csv文件从红移中卸载

然后查看Redshift UNLOAD命令并添加
NULL作为
选项。例如:


NULL为“NULL”

我使用NULLIF函数解决此问题:

insert into table values (NULLIF(?,''),NULLIF(?,''),NULLIF(?,''),NULLIF(?,''))
使用null作为“\N”将空白转换为null


你能事先转换它们吗?如果(urValue='',null,urValue)@AndyHolmes,好问题,检查edit@MXD,我考虑过这个问题,但是将插入字符串添加到管道的方式是这样的:插入到表值(?,,?,?)中,因此如果我应用它,我将得到一个错误,即没有足够的参数。如果(urValue='',urnewvalue=null,(at)urnewvalue=urvalue)表格值((at)urvalue)您好!我尝试了这个,问题是在CSV中我将有NULL,但管道在执行插入时将其解释为“NULL”,因此我一直收到相同的错误不正确的整数值:第1行右侧列“col4”的“NULL”,这只是一个示例。您需要找出管道认为NULL的内容,并在unload命令中使用它。我t可能是空字符的某个版本:请注意,它是从CSV文件加载的,由第三方服务完成。
unload ('SELECT * FROM table')
to 's3://path' credentials 
'aws_access_key_id=sdfsdhgfdsjfhgdsjfhgdsjfh;aws_secret_access_key=dsjfhsdjkfhsdjfksdhjkfsdhfjkdshfs'
delimiter '|' null as '\\N' ;