使用python将整个文本文件加载到数据库中
Posted
技术标签:
【中文标题】使用python将整个文本文件加载到数据库中【英文标题】:Load entire text file in database using python 【发布时间】:2015-02-16 07:06:01 【问题描述】:我想将具有由分隔符 ||
分隔的两个字段的整个文本文件加载到我的 netezza 数据库中。
由于数据集很大,因此每行插入每个 n 会降低我的性能。
我的文本文件是这样的:
ING BANK, N.V.||520639
STANDARD CHARTERED BANK MALAYSIA BERHAD||483551
VJA||492287
您能否帮助建议我如何一次将我的文件上传到数据库中?
谢谢。
【问题讨论】:
我尝试使用 LOAD DATA INFILE 但抛出错误。回溯(最近一次调用最后一次):文件“如果您通过 ODBC 连接远程将数据加载到 Netezza,您可以使用以下语句作为模板。在其中,我通过通用 SQL 开发工具使用 ODBC 连接从本地的文本文件加载到我的 Windows 工作站。
INSERT INTO BNK_CDE_TEST
SELECT *
FROM external 'c:\bankdata.TXT'
USING (DELIMITER '|' REMOTESOURCE 'ODBC');
请务必注意,Netezza 不支持多字符列分隔符。您要么需要预处理数据以转换您的“||”分隔符到别的东西,或者你需要执行一个像下面我们使用'|'的技巧作为分隔符,因此 '||'被视为垃圾空列周围的两个分隔符。
INSERT INTO BNK_CDE_TEST
SELECT COL1, COL2
FROM external 'c:\bankdata.TXT' (COL1 VARCHAR(100), junkcol INT, col2 bigint)
USING (DELIMITER '|' REMOTESOURCE 'ODBC');
【讨论】:
非常感谢。信息真的很有帮助。我将分隔符更改为“|”并尝试运行第一个命令。我收到此错误:错误:('HY000','[HY000] 打开数据文件(38)(SQLExecDirectW)时发生错误')。请提出这里有什么问题。 这表明“FROM EXTERNAL...”后面的路径在某些方面不正确。查看您上面的评论,您可能正在使用相对路径。以这种方式加载需要完整的路径规范。此外,由于双定界符“||”,我给出的第一个示例可能不适用于您的特定情况。对于您的测试,我会说尝试使用完整路径的答案中的第二个。以上是关于使用python将整个文本文件加载到数据库中的主要内容,如果未能解决你的问题,请参考以下文章
python 以块的形式读取文件而不将整个文件加载到内存中。