我有一个包含大量列的表。许多列包含NULL值。但是,当我尝试从中创建CSV文件时,NULL正在被' / N'取代。我想将所有列值设置为空字符串而不是NULL,以便我不必面对' / N'
的问题答案 0 :(得分:0)
您可以更新所有列并设置为空字符串而不是NULL,如果您不想继续使用NULL。
如果要在DB中继续NULL,则导出到临时数据库表并应用逻辑...
答案 1 :(得分:0)
您可以使用FIELDS ESCAPED BY
子句和SELECT
查询并指定空字符串或空格(' '
)以获取空值而不是\N
,例如:
SELECT * INTO file
FIELDS ESCAPED BY ''
LINES TERMINATED BY '\n'
FROM test_table;
Here's MySQL关于它的文档,这就是它所说的:
如果FIELDS ESCAPED BY字符为空,则不会转义任何字符 并且NULL输出为NULL,而不是\ N。
答案 2 :(得分:0)
首先,您需要使用以下查询更新列默认值。
ALTER TABLE `table_name` CHANGE `column_name` `column_name` varchar(length) default '';
UPDATE `table_name` SET `column_name`='' where `column_name`='/N';
愿这对你有所帮助。
答案 3 :(得分:0)
您可以使用结果集元数据。遍历所有列并检查空值。
ResultSet rsMain = stmt.executeQuery(selectQuery);
ResultSetMetaData rsmd = rsMain.getMetaData();
while(rsMain.next()){
for (int i = 1; i <=rsmd.getColumnCount(); i++) {
if(rsMain.wasNull())
{
sb.append('');// this is the string buffer that writes to the csv
sb.append(',');
}
}
}
答案 4 :(得分:0)
您可以像这样更新表格:
UPDATE yourTable
SET col1 = IFNULL(col1, ''),
col2 = IFNULL(col2, ''),
col3 = IFNULL(col3, ''),
...
完成此操作后,您应该更改架构,以便不允许空值,默认值为''
,因此您不必再次执行此操作。