[英]How to import data from .txt file to populate a table in SQL Server
Every day a PPE.txt
file with clients data, separated by semicolon and always with the same layout is stored to a specific file directory. 每天,带有客户数据的PPE.txt
文件(用分号分隔,并且始终具有相同的布局)存储在特定的文件目录中。
Every day someone has to update a specific table from our database based in this PPE.txt
. 每天都有人必须根据此PPE.txt
从我们的数据库中更新特定的表。
I want to automate this process via a SQL script 我想通过SQL脚本自动执行此过程
What I thought would be a solution is to import the data via a script from this .txt
file into a created table, then execute the update. 我认为一种解决方案是通过脚本从此.txt
文件将数据导入到创建的表中,然后执行更新。
What I have so far is 我到目前为止所拥有的是
IF EXISTS (SELECT 1 FROM Sysobjects WHERE name LIKE 'CX_PPEList_TMP%')
DROP TABLE CX_PPEList_TMP
GO
CREATE TABLE CX_PPEList_TMP
(
Type_Registy CHAR(1),
Number_Person INTEGER,
CPF_CNPJ VARCHAR(14),
Type_Person CHAR(1),
Name_Person VARCHAR(80),
Name_Agency VARCHAR(40),
Name_Office VARCHAR(40),
Number_Title_Related INTEGER,
Name_Title_Related VARCHAR(80)
)
UPDATE Table1
SET SN_Policaly_Exposed = 'Y'
WHERE Table1.CD_Personal_Number = CX_PPEList_TMP.CPF_CNPJ
AND Table1.SN_Policaly_Exposed = 'N'
UPDATE Table1
SET SN_Policaly_Exposed = 'N'
WHERE Table1.CD_Personal_Number NOT IN (SELECT CX_PPEList_TMP.CPF_CNPJ
FROM CX_PPEList_TMP)
AND Table1.SN_Policaly_Exposed = 'Y'
I know I haven't given much, but it is because I don't have much yet. 我知道我没有付出太多,但这是因为我还没有太多。
I want to populate the CX_PEPList_TMP
temp table with the data from the PEP.txt
file via a script so I could just execute this script to update my database. 我想通过脚本使用来自PEP.txt
文件的数据填充CX_PEPList_TMP
临时表,因此我只需执行此脚本即可更新数据库。 But I don't know any kind of command I can use neither have found in my research. 但是我不知道我在研究中找不到任何一种命令。
Thanks in advance! 提前致谢!
You can read text files using OPENROWSET option (first you have to enable adhoc queries) 您可以使用OPENROWSET选项读取文本文件(首先必须启用临时查询)
SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=C:\Docs\csv\;',
'SELECT * FROM PPE.txt')
SELECT
*
FROM
OPENROWSET
('Microsoft.ACE.OLEDB.12.0','Text;Database=C:\Docs\csv\;IMEX=1;','SELECT *
FROM PPE.txt') t
You can import text file data to a staging table and update data from it: 您可以将文本文件数据导入登台表并从中更新数据:
BULK INSERT dbo.StagingTable
FROM 'C:\PPE.txt'
WITH
(
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n'
)
在您的情况下,我建议您使用像SSIS
这样的ETL
,这种ETL
更好SSIS
易于使用,并且您还可以Schedule
包在特定时间执行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.