GVKun编程网logo

Pentaho 将空字符串视为 null(空字符串转为null)

28

如果您对Pentaho将空字符串视为null感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Pentaho将空字符串视为null的详细内容,我们还将为您解答空字符串转为nul

如果您对Pentaho 将空字符串视为 null感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Pentaho 将空字符串视为 null的详细内容,我们还将为您解答空字符串转为null的相关问题,并且为您提供关于c# – 在插入数据库时将空字符串设置为null、CsvMapper 将空字段序列化为文字 null、Jackson:将空字符串反序列化为空字符串、java – 将字符串定义为Null更好或为空字符串的有价值信息。

本文目录一览:

Pentaho 将空字符串视为 null(空字符串转为null)

Pentaho 将空字符串视为 null(空字符串转为null)

如何解决Pentaho 将空字符串视为 null?

你好,我对 pentaho 很陌生,为什么当 table_input 有一个空字符串时,当插入到 table_output 时数据变为空

例如在表格输入中

ID|name
1|dan
2|
3|itzy
4|kim
5|(null)

我确实预览了我的查询,它可以并且有空字符串

但是当它进入表输出时它变成了空, 我检查了数据库 SELECT * FROM TABLE_OUTPUT

ID|name
1|dan
2|(null)
3|itzy
4|kim
5|(null)

我的步骤包括 TABLE_INPUT=>TABLE_OUTPUT 只是一个简单的选择和插入 我正在使用 pdi-ce-9.1.0.0-324

表输入来自MysqL DB,表输出是POSTGREsql 13

解决方法

恐怕您遇到的问题超出了 Pentaho,因为如您所见,它根本不会更改数据,它只会读取和写入数据。我尝试了各种步骤,试图用空格或制表符替换空字符串,但没有管理它。 您必须在 SQL 中运行以下代码:

SELECT ISNULL( name,'''')

SELECT COALESCE( name,'''')

这样,如果出现不允许空值的任务,您将能够使用您的数据库。

(您可以使用 Pentaho 中的 ''SQL Script'' 步骤并在填充表后运行它)

希望能帮到你! 祝你有美好的一天!

c# – 在插入数据库时将空字符串设置为null

c# – 在插入数据库时将空字符串设置为null

我一直无法为这个问题找到合适的解决方案,我知道这很简单,但我忘记了怎么做.我有一个带有一个textfield字段的表单,用户不需要填写.我想在数据库中插入NULL,而不是它当前正在执行的0.不过,我不确定我错过了什么.文本框名为taxRateTxt,我目前所使用的对我不起作用:

try
{
    using (sqlConnection cn = new sqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
    {
        cn.open();
        sqlCommand cmd = new sqlCommand();
        cmd.Connection = cn;

        cmd.Parameters.Add(new sqlParameter("@FIPSCountyCode",countyCodeTxt.Text));
        cmd.Parameters.Add(new sqlParameter("@StateCode",stateCodeList.SelectedValue));
        cmd.Parameters.Add(new sqlParameter("@CountyName",countyNameTxt.Text));

        string taxStr = taxRateTxt.Text;
        //test for an empty string and set it to db null
        if (taxStr == String.Empty)
        {
            taxStr = dbnull.Value;

        }

        cmd.Parameters.Add(new sqlParameter("@TaxRate",taxStr));

        if (AddBtn.Visible == true)

            cmd.CommandText = addQuery;

        if (EditBtn.Visible == true)
        {
            cmd.CommandText = editQuery;
        }

        cmd.ExecuteNonQuery();
        cn.Close();
    }

我在这里错过了什么?

解决方法

删除这段代码

string taxStr = taxRateTxt.Text;
//test for an empty string and set it to db null
if (taxStr == String.Empty)
{
    taxStr = dbnull.Value;

}

并改变这一点

cmd.Parameters.Add(new sqlParameter("@TaxRate",taxStr));

对此

cmd.Parameters.Add(new sqlParameter("@TaxRate",string.IsNullOrEmpty(taxRateTxt.Text) ? (object)dbnull.Value : taxRateTxt.Text));

CsvMapper 将空字段序列化为文字 null

CsvMapper 将空字段序列化为文字 null

如何解决CsvMapper 将空字段序列化为文字 null?

我希望 CsvMapper 将空实例字段映射为字面空值(如 Desired Output 中所示)。例如:

public class Main {
    public static void main(String[] args) throws JsonProcessingException {
        CsvMapper mapper = new CsvMapper();
        CsvSchema schema = mapper.schemaFor(Pojo.class);
        ObjectWriter writer = mapper.writer(schema.withUseHeader(true));
        Pojo pojo = new Pojo();
        pojo.setFirstName("John");
        pojo.setLastName(null);
        String csv = writer.writeValueAsstring(pojo);
        System.out.println(csv);
    }

    @Data
    public static class Pojo {
        private String firstName;
        private String lastName;
    }
}

实际输出

firstName,lastName
John,

期望输出

firstName,null

解决方法

CsvMapper 代码进行了一些挖掘,发现它使用了 DefaultSerializerProvider

因此我用自定义的 JsonSerializer

覆盖了 nullSerializer
public class CustomNullSerializer extends JsonSerializer<Object> {
    public void serialize(Object value,JsonGenerator jgen,SerializerProvider provider) throws IOException {
        jgen.writeString("null");
    }
}

然后修改了CsvMapper

CsvMapper mapper = new CsvMapper();
DefaultSerializerProvider.Impl sp = new DefaultSerializerProvider.Impl();
sp.setNullValueSerializer(new CustomNullSerializer());
mapper.setSerializerProvider(sp);
,

找到更好的答案

CsvSchema schema = mapper.schemaFor(Pojo.class).withNullValue("null");

Jackson:将空字符串反序列化为空字符串

Jackson:将空字符串反序列化为空字符串

我有以下类,它是由Jackson映射的(简化版):

public class POI {
    @JsonProperty("name")
    private String name;
}

在某些情况下,服务器会返回,"name": null然后我想将name设置为空的Java String。

是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串null

java – 将字符串定义为Null更好或为空字符串

java – 将字符串定义为Null更好或为空字符串

我来自C#.net背景,每当我有一个字符串时,我就把它声明为String.Empty
现在我正在查看来自同事的 Java代码,他已经在这样的方法中声明了他的字符串:

String myStr = null;

我不喜欢它,更糟糕的是,他在“IF”块中为这些字符串赋值,它可能甚至不符合条件,然后在方法结束时调用myStr.length()在他们.

所以我的问题是Java中的首选方式是什么?你认为将它们定义为String.Empty更好还是将它们保留为null并在它们之前调用.length()之前进行空检查?

解决方法

通常,使用空值是一个坏主意,特别是如果它们从方法返回或传递给另一个方法.使用 Null Object pattern更好,在字符串的情况下,Null对象是一个空字符串.通过始终如一地避免空值,获得NullPointerException的可能性变小,代码变得更具可读性(这在 Clean Code第7章,第110-112页中详细讨论).

在Java String中,s =“”没有分配任何内存,因为JVM将实现字符串文字,因此甚至没有性能差异(即使有,也会是一个过早的优化).

我们今天的关于Pentaho 将空字符串视为 null空字符串转为null的分享就到这里,谢谢您的阅读,如果想了解更多关于c# – 在插入数据库时将空字符串设置为null、CsvMapper 将空字段序列化为文字 null、Jackson:将空字符串反序列化为空字符串、java – 将字符串定义为Null更好或为空字符串的相关信息,可以在本站进行搜索。

本文标签: