我是 MySQL 的菜鸟。我需要用 .txt 文件填充一个字段。
我的脚本目前显示:
LOAD DATA INFILE '/attachments/file.txt' into table files (data);
但是,当我运行查询时,MySQL 显示我不仅更新了一条记录,而且更新了多条记录——我的 .txt 文件的每一行都转到不同的字段。
是否可以要求我的脚本将整个 .txt 文件上传到单个字段中?
谢谢!
我是 MySQL 的菜鸟。我需要用 .txt 文件填充一个字段。
我的脚本目前显示:
LOAD DATA INFILE '/attachments/file.txt' into table files (data);
但是,当我运行查询时,MySQL 显示我不仅更新了一条记录,而且更新了多条记录——我的 .txt 文件的每一行都转到不同的字段。
是否可以要求我的脚本将整个 .txt 文件上传到单个字段中?
谢谢!
有几种方法可以做到这一点,具体取决于您的场景细节:
你可能想要这样的东西:
LOAD DATA LOCAL INFILE '/path/to/file/data_file.csv'
IGNORE
INTO TABLE `databasename`.`tablename`
CHARACTER SET utf8
FIELDS
TERMINATED BY '\n'
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES
(column1)
SHOW WARNINGS;
这将导入 from /path/to/file/data_file.csv
into databasename.tablename
,将文本文件中的每一完整行导入表中的新行,并将该行中的所有数据放入名为 的列column1
中。更多细节在这里。
或者您可以使用 LOAD_FILE 函数,如下所示:
UPDATE table
SET column1=LOAD_FILE('/path/to/file/data_file.csv')
WHERE id=1;
这将导入文件的内容/path/to/file/data_file.csv
并将其存储column1
在id=1
. 更多细节在这里。这主要用于将二进制文件加载到BLOB
字段中,但是如果您想要的话,您也可以使用它将整个文本文件吸入单行中的单个列中。
要加载大型文本文件,您应该使用 TEXT 类型的列 - 它可以毫无问题地存储大量文本 - 请参阅此处了解更多详细信息。