我需要将 csv 文件导入 Firebird,我花了几个小时尝试了一些工具,但没有一个能满足我的需求。
主要问题是我尝试过的所有工具都像 EMS Data Import和 Firebird Data Wizard希望我的 CSV 文件包含我的表所需的所有信息。
我需要在插入语句中编写一些自定义SQL,例如,我有一个包含城市名称的CSV文件,但由于我的数据库已经拥有另一个表中的所有城市(标准化),所以我需要编写一个子查询在插入语句中查找城市并写入其 ID,我还有一个存储过程来创建 GUIDS。
我的插入语句将是这样的:
INSERT INTO PERSON (ID, NAME, CITY_ID) VALUES((SELECT NEW_GUID FROM CREATE_GUID), :NAME, (SELECT CITY_ID FROM CITY WHERE NAME = :CITY_NAME)
我该如何解决这个问题?
最佳答案
这有点粗糙 - 但对于一次性工作,我有时会使用 Excel。
如果将 CSV 文件导入 Excel,则可以创建一个公式,该公式通过在公式中使用字符串串联来创建 INSERT 语句。因此,如果您的 CSV 文件有 3 列,分别出现在 Excel 的 A、B 和 C 列中,您可以编写如下公式...
="INSERT INTO MyTable (Col1, Col2, Col3) VALUES (" & A1 & ", " & B1 & ", " & C1 & ")"
然后,您可以将公式复制到所有行,然后将答案复制并粘贴到文本文件中以针对数据库运行。
就像我说的 - 这很粗糙 - 但它可能是一种“快速而肮脏”的完成工作的方式!
关于sql - 从 CSV 文件生成插入 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8213/