【问题标题】:how to upload whole text of a file in a row in mysql through terminal如何通过终端在mysql中连续上传文件的整个文本
【发布时间】:2019-04-18 23:54:34
【问题描述】:

如何在数据库中连续上传文本文件的整个文本,文本被分割并存储在后续行中。

这是我的 SQL 文件的代码,数据库名称是包含名为 info 的表的 info,该表具有两列 des1 和 des2,字段为 VARCHAR(3000):

    use info;

    INSERT INTO info (des1) VALUES (LOAD_FILE('eng.txt'));

    select * from(info);

我得到以下输出:

des1    des2
NULL    NULL

I also attatched an image showing output

我希望文件中的所有文本都在数据库的一行中,这必须在终端中完成

【问题讨论】:

  • 除非您的文件字面上以文本 end-of-file 结尾,否则这是行不通的。阅读the documentation

标签: mysql sql database bash shell


【解决方案1】:

您如何形成要插入的字符串可能存在问题。您可以在编程语言的帮助下轻松完成。

我提供了一个可以在 Python 中运行的简单解决方案。

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="password",
  database="db"
)

def fileReadToString(filename):
    result = ""
    with open(filename, "r") as ins:
        for line in ins:
            result +=(line)
    return result

file = fileReadToString('eng.txt')

mycursor = mydb.cursor()

sql = "INSERT INTO info VALUES (%s)"
val = (file)
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, "done")

【讨论】:

    【解决方案2】:

    LOAD DATA INFILE 用于结构化数据。对于非结构化数据使用LOAD_FILE():

    INSERT INTO info (des1) VALUES (LOAD_FILE('eng.txt'))
    

    【讨论】:

    • 仍然给出相同的结果,每一行的文本在文件中都有一个换行符,我想要一行中的整个文本。请帮帮我
    猜你喜欢
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2013-01-01
    • 2020-05-26
    相关资源
    最近更新 更多