在不知道确切列数的情况下将csv文件导入MariaDB [已关闭]

wfsdck30  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(99)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

两个月前关门了。
Improve this question
我需要导入一个csv文件到一个mysql数据库,问题是:csv文件包含太多的横向天数,这意味着我需要根据Excel文件中存在的字段在我的数据库中创建字段。
我发现这个脚本,并试图adpat它到我的情况下,但我不断得到以下错误:

  • SQLSTATE[42000]:语法错误或访问冲突:1064 1064您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以了解在“;图尔诺; 2022年10月6日; 2022年6月11日; 2022年6月12日;*

我会把一个图像,使您有一个线索了什么我做enter image description here
第一个

x33g5p2x

x33g5p2x1#

假设你有一个格式良好的csv。主要是第一行应该指出每一列的内容,也假设唯一的标签。

name, surname -> tags
RName1,RSurname1 -> contents, count as Line 1
RName2,RSurname2 

//if tags is missing then you can add some defaults as
//c1,c2 ... cn (n-> deductible after parsing)

数据库设计可以是:

id: Integer (autonumber, PK)
lineKey : String, not null
lineValue : String
fileName : String (assume unique), not null
lineNo : Integer, not null (on LineNo from file) 

//lineNo -> can be renamed as nextColumn 
//increment counter on added column, each time +1 start from 1.

key(lineKey, fileName, lineNo)

数据可添加为:

(name,Rname1,fileName1,1)
(surname,Rsurname1,fileName1,2) 
...
on other import maybe

name , surname, dob
Rname, null  , 2000-01-01

so can be added as
(name, Rname, fileName2,1) -> another file so counter start from 1
(surname, null, fileName2,2)

它的一个主要优点是存储与文件内容无关(与有多少列无关),而且不需要每次解析一个文件来创建一个新表。
注意:Db设计是关键!
假设有100个不同的文件作为列号,因此需要创建100个附加表?!
或者一个表有超过100列,谁知道一个文件可以包含什么?!
(hard由于存储-〉影响查询性能。许多列可以为空)

相关问题