Illegal line end in string literal

错误再现

  • 用sqoop从msyql导入数据到hdfs,由于mysql里的表很多,就写了个shell脚本循环调用sqoop,以下是脚本
while read mysqlTable
do
 sqoop import \
 --connect jdbc:mysql://ip:3306/database \
 --username root \
 --password password \
 --table ${mysqlTable} \
 --driver com.mysql.jdbc.Driver \
 --fields-terminated-by '\t' \
 --target-dir /tmp/${mysqlTable} \
 -m 1
 done < mysql_table.txt
  • 提示Illegal line end in string literal 错误

问题定位

  • 是因为mysql_table.txt是dos格式的,shell脚本读取之后会有^M的符号

解决问题

  • 用dos2unix命令解决了,这个命令是把dos格式的文件转换成unix格式的文件的命令
dos2unix mysql_table.txt
  • 具体dos2unix的安装自行搜索

转载于:https://my.oschina.net/u/4017963/blog/3011584

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "illegal line end in string literal" 的意思是字符串字面量中存在非法的行结尾。这通常是因为在字符串中使用了换行符,但没有使用转义字符来表示它。要解决这个问题,可以在字符串中使用转义字符来表示换行符,或者将字符串拆分成多行并使用加号连接它们。 ### 回答2: 在Java编程中,Illegal Line End in String Literal(字符串字面量中的非法行结束)通常是指在一个字符串字面量中,出现了换行符\n或\r,但没有用双引号将其包括起来。这通常会导致编译器无法解析字符串字面量,从而抛出编译错误提示“illegal line end in string literal”。 例如,在下面的示例中,第二个字符串字面量中的换行符没有用双引号包括起来,因此会导致编译错误: String str1 = "这是一个正常的字符串字面量"; String str2 = "这个字符串字面量包含了一个换行符 ,因此会导致编译错误"; 为了解决这个问题,我们需要在字符串字面量中使用转义字符来表示特殊字符。在Java中,常见的转义字符包括: \n:换行符 \r:回车符 \t:制表符 \b:退格符 \":双引号 \':单引号 \\:反斜杠 只需要将以上特殊字符使用反斜杠进行转义,就可以在字符串字面量中正常表示这些字符。例如,将上面的代码改为: String str1 = "这是一个正常的字符串字面量"; String str2 = "这个字符串字面量包含了一个换行符\n ,现在已经能够正常编译了"; 通过使用转义字符,我们可以在字符串字面量中表示各种特殊字符,而不会因为没有使用双引号进行包裹而导致编译错误。因此,在编写Java代码时,我们需要格外注意这个问题,确保所有的字符串字面量都正确使用了双引号进行包裹,并使用转义字符来表示其中的特殊字符。 ### 回答3: 当我们在编写程序时,有时会出现类似于“illegal line end in string literal”这样的错误信息。简单来说,这是因为我们在字符串文本中的某行没有使用正确的结束标记而导致的错误。 在Java编程中,我们通常使用双引号“”来表示字符串。当我们在一个字符串中换行时,如果没有使用正确的结束标记,编译器就会认为这个字符串还没有结束,导致出现错误。例如,下面的代码中就出现了“illegal line end in string literal”的错误: String str = "Hello,world! Nice to meet you."; 在上面的代码中,我们在第一行字符串中没有使用正确的结束标记,导致编译器无法识别这个字符串的结束位置。因此,在第二行字符串中出现了错误提示。 要解决这个问题,我们需要在每个字符串的结尾处添加正确的结束标记,例如在上面的代码中,我们可以在第一行字符串的结尾处添加一个双引号来解决这个问题。代码修改后如下所示: String str = "Hello,world!\" + "Nice to meet you."; 在上面的修改后的代码中,我们使用了转义字符“\”来表示双引号。这样编译器就能够正确地识别字符串的结束位置了,从而避免了“illegal line end in string literal”的错误。 除了上述方法,我们在编写字符串时也可以使用单引号“’”来表示字符串。但是需要注意的是,单引号表示的是字符类型,而不是字符串类型,因此在处理字符串时需要格外小心,并遵循Java的语法规范。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值